`
yuyututuw
  • 浏览: 27863 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

计算机C语言编程-----C语言保存图形为16色BMP文件

阅读更多

计算机C语言编程-----C语言保存图形为16色BMP文件
2011年12月31日
  把下面的代码保存为文件名.C,如sv.c,存到c编译软件的include 文件夹内,这样以后要保存上面的图形模式文件,只要调用下面的函数就行了。如save_pic("my.bmp");,我的这些贴图都是用这个函数保存的。
  #include
  void save_pic(char *fn){
  typedef long LONG;
  typedef unsigned char BYTE;
  typedef unsigned long DWORD;
  typedef unsigned short WORD;
  typedef struct tagBITMAPFILEHEADER {
  WORD    bfType;
  DWORD   bfSize;
  WORD    bfReserved1;
  WORD    bfReserved2;
  DWORD   bfOffBits;
  } BITMAPFILEHEADER;
  typedef struct tagBITMAPINFOHEADER{
  DWORD      biSize;
  LONG       biWidth;
  LONG       biHeight;
  WORD       biPlanes;
  WORD       biBitCount;
  DWORD      biCompression;
  DWORD      biSizeImage;
  LONG       biXPelsPerMeter;
  LONG       biYPelsPerMeter;
  DWORD      biClrUsed;
  DWORD      biClrImportant;
  } BITMAPINFOHEADER;
  int i,j;
  FILE *fp;
  BITMAPFILEHEADER bfh;
  BITMAPINFOHEADER bif;
  int color[16]={0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15};
  unsigned char rgb[64]={0,0,0,0,0,0,128,0,0,128,0,0,0,128,128,0
  ,128,0,0,0,128,0,128,0,128,128,0,0,128,128,128,0
  ,192,192,192,0,0,0,225,0,0,255,0,0,0,255,255,0
  ,255,0,0,0,255,0,255,0,255,255,0,0,255,255,255,0};
  union
  {
  unsigned char value;
  struct
  {
  unsigned c1:4;
  unsigned c2:4;
  }color;
  }mycolor;
  bfh.bfType=0x4d42;
  bfh.bfSize=153718;
  bfh.bfReserved1=0;
  bfh.bfReserved2=0;
  bfh.bfOffBits=118;
  bif.biSize=40;
  bif.biWidth=640;
  bif.biHeight=480;
  bif.biPlanes=1;
  bif.biBitCount=4;
  bif.biCompression=0;
  bif.biSizeImage=0;
  bif.biXPelsPerMeter=0;
  bif.biYPelsPerMeter=0;
  bif.biClrUsed=0;
  bif.biClrImportant=0;
  fp=fopen(fn,"wb");
  fwrite(&bfh,sizeof(bfh),1,fp);
  fwrite(&bif,sizeof(bif),1,fp);
  fwrite(rgb,sizeof(rgb),1,fp);
  for(j=479;j>=0;j--){
  for(i=0;i<640;i+=2){
  mycolor.color.c2=color[getpixel(i,j)];
  mycolor.color.c1=color[getpixel(i+1,j)];
  putc(mycolor.value,fp);
  }
  }
  fclose(fp);
  }
分享到:
评论

相关推荐

    《C语言高级编程与实例剖析》源码

    《C语言高级编程与实例剖析》随书源码 第1章 内存管理 1. 1.1 预备知识 1 1.1.1 PC存储器结构 1 1.1.2 CPU地址线宽度 3 1.1.3 内存管理方式 5 1.1.4 内存编译模式 6 1.1.5 堆概念和结构 9 ...

    C游戏编程从入门到精通(13M)

    无字库技术 73 7.5.1 小字库技术 74 7.5.2 无字库技术 80 7.6 中文特效 83 7.6.1 多字体显示 83 7.6.2 文字格式显示 83 7.7 本章小结 84 第8章 图形文件 85 8.1 bmp文件调用 85 8.1.1 bmp文件结构 86 8.1.2 256色bmp...

    灰度图像的显示及其抖动算法的实现

    [实验目的] 通过分析BMP文件的格式, 从而读取并显示BMP文件以及抖动算法的实现 ...BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位

    vc源代码合集0951.rar

    2012-06-12 11:54 38,018 C语言图形编程.rar 2012-06-12 12:26 521,167 C语言实现可视化人机界面的有效方法.pdf 2012-06-12 12:23 3,250,257 C语言精髓例子.rar 2012-06-12 11:41 334,336 C语言编程规范-1.0.doc ...

    12864液晶中文取模软件

    保存文件:C语言格式的默认为.h类型,汇编格式的默认为.inc类型,只要将他们加入到 您的工程中就可以了。 7。新增加了自动添加下划线功能。这项功能在做点阵显示和修改的时候并不出现下划线, 设置了以后仅仅在...

    grub4dos-V0.4.6a-2017-02-04更新

    2014-01-16(yaya) 1.当 FDD 模式的 u 盘(有 BPB,没有分区表)被 BIOS 分配驱动器号 0x80 时,映射为 0x00, 同时屏蔽驱动器号 0x80(避免通过 BIOS 读 u 盘,有可能死机)。 这一更改也避免了 Issue 162 读 ...

    LcmZimo字模软件

    保存文件:C语言格式的默认为.h类型,汇编格式的默认为.inc类型,只要将他们加入到 您的工程中就可以了。 7。新增加了自动添加下划线功能。这项功能在做点阵显示和修改的时候并不出现下划线, 设置了以后仅仅在...

    数字图像图形处理C源代码包1

    VC图形编程的一个简单工程&lt;1450kb&gt;&lt;END&gt; 25,DIBShow.zip 设备无关位图的一个里例子&lt;1830kb&gt;&lt;END&gt; 26,Clock.zip 一个数字时钟的图形的工程&lt;1450kb&gt;&lt;END&gt; 27,PAINTOBJ.zip 一个类似于画图的小程序&lt;1450kb&gt;&lt;END&gt; 28,...

    车牌识别程序

    读BMP文件,只能打开256色 (可以是灰度) 显示和内存贴图技术 关于调色板: 调色板实际上是一个数组,4个BYTE 分别是 B,G,R,和 Reserved 每一个像素点都有一个相应的数组。 关于VC和windows 的绘图机制: 使用...

    C++MFC教程

    3、开发注重交互并且文件读写复杂的的简单应用程序可以利用以CFormView为基础视的单文档视结构。 4、利用对话框得到用户输入的数据,在等级提高后可使用就地输入。 5、在对多文档要求不强烈时尽量避免多文档视结构,...

    C 图象的检测,模板匹配示例源代码.rar

    图象的检测,模板匹配,基于C的一个图像编程应用实例,注意,程序仅可以识别256色的BMP图像,程序写的比较早,对于了解图像解析有一定参考性。 命令行编译过程如下: vcvars32 rc bmp.rc cl detect.c bmp.res user32...

    字模软件(开发必备)

    方便用户在编程中轻松算模,这款软件受到使用的人的极大表扬。 1.生成中英文数字混合的字符串的字模数据. 2.可选择字体,大小,并且可独立调整文字的长和宽,生成任意形状的字符。 3.各种旋转,翻转文字功能 4.任意...

    会计理论考试题

    6.为了以最佳方式、最少的重复,为多种应用服务,把数据集中起来以一定的组织方式存在计算机的外存储器中,就构成 __D___ 。 A、FoxBASE B、DOS C、数据库管理系统 D、数据库 7.用紧急启动盘(ESD)启动计算机后,屏幕...

    JAVA面试题最全集

    16.什么是MDA 17.tcp与udp的区别 18.链表与散列表和数组的区别 19.堆和栈的区别 20.ejb的分类及区别 21.你对现在软件业以及国内软件业的看法 22.谈谈java多线程 23.谈谈文件加密技术 24.软件开发生命周期 ...

Global site tag (gtag.js) - Google Analytics