[C.C++] C语言集锦(一) C代码生成图片:BMP、PNG和JPEG

90 0
Honkers 18 小时前 | 显示全部楼层 |阅读模式

C语言集锦(一) C代码生成图片:BMP、PNG和JPEG

1.生成BMP图片
在学习图形图像的过程中,最简单和常见的格式是BMP和PPM。下面将给出生成BMP的极度精简代码,然后讲解BMP格式。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define w 200
  4. #define h 200
  5. void WriteBMP(char*img,const char* filename)
  6. {
  7. int l=(w*3+3)/4*4;
  8. int bmi[]= {l*h+54,0,54,40,w,h,1|3*8<<16,0,l*h,0,0,100,0};
  9. FILE *fp = fopen(filename,"wb");
  10. fprintf(fp,"BM");
  11. fwrite(&bmi,52,1,fp);
  12. fwrite(img,1,l*h,fp);
  13. fclose(fp);
  14. }
  15. int main()
  16. {
  17. char img[w*h*3];
  18. for(int i=0; i<w*h*3; i++)img[i]=rand()%256;
  19. WriteBMP(img,"test.bmp");
  20. system("test.bmp");
  21. return 0;
  22. }
复制代码

上述代码生成一幅宽和高均为200的BMP随机位图。如图所示:


2.生成PNG图片
miloyip给出了生成无压缩PNG图片所需的最少的ANSI C 代码,详情见:https://github.com/miloyip/svpng。

补充:LodePNG是一个集合了PNG图像解码器和编码器的代码文件,不依赖于诸如zlib和libpng的外部链接/库,提供方便友好的PNG编解码器调用方法。LodePNG主要是采用C(ISO C90)编写的,并提供了C++的接口。LodePNG的使用非常简单,只要在项目文件中包含lodepng.cpp和lodepng.h或者lodepng.c和lodepng.h就可以。

3.生成JPEG图片
SuperSodaSea给出了生成JPEG图片的C++代码,详情见:https://github.com/SuperSodaSea/svjpeg。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

特级红客

关注
  • 3322
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行