vc中保存bmp位图文件的方法及bmp文件格式带源码实现

vc中保存bmp位图文件的方法及bmp文件格式带源码实现

ID:11499117

大小:28.00 KB

页数:4页

时间:2018-07-12

vc中保存bmp位图文件的方法及bmp文件格式带源码实现_第1页
vc中保存bmp位图文件的方法及bmp文件格式带源码实现_第2页
vc中保存bmp位图文件的方法及bmp文件格式带源码实现_第3页
vc中保存bmp位图文件的方法及bmp文件格式带源码实现_第4页
资源描述:

《vc中保存bmp位图文件的方法及bmp文件格式带源码实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include"stdio.h"#include"Windows.h"//几个全局变量,存放读入图像的位图数据、宽、高、颜色表及每像素所占位数(比特)//此处定义全局变量主要为了后面的图像数据访问及图像存储作准备unsignedchar*pBmpBuf;//读入图像数据的指针intbmpWidth;//图像的宽intbmpHeight;//图像的高RGBQUAD*pColorTable;//颜色表指针intbiBitCount;//图像类型boolreadBmp(char*bmpName){ //二进制读方式打开指定的图像文件   FI

2、LE*fp=fopen(bmpName,"rb"); if(fp==0)return0;   //跳过位图文件头结构BITMAPFILEHEADER fseek(fp,sizeof(BITMAPFILEHEADER),0);   //定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中 BITMAPINFOHEADERhead; fread(&head,sizeof(BITMAPINFOHEADER),1,fp);  //获取图像宽、高、每像素所占位数等信息 bmpWidth=head.biWidth; bmpHeight=

3、head.biHeight; biBitCount=head.biBitCount;  //定义变量,计算图像每行像素所占的字节数(必须是4的倍数) intlineByte=(bmpWidth*biBitCount/8+3)/4*4;  //灰度图像有颜色表,且颜色表表项为256 if(biBitCount==8){ //申请颜色表所需要的空间,读颜色表进内存 pColorTable=newRGBQUAD[256]; fread(pColorTable,sizeof(RGBQUAD),256,fp); }  //申请位图数据所需要的空间,

4、读位图数据进内存 pBmpBuf=newunsignedchar[lineByte*bmpHeight]; fread(pBmpBuf,1,lineByte*bmpHeight,fp);  //关闭文件 fclose(fp);  return1;}boolsaveBmp(char*bmpName,unsignedchar*imgBuf,intwidth,intheight,   intbiBitCount,RGBQUAD*pColorTable){ //如果位图数据指针为0,则没有数据传入,函数返回 if(!imgBuf) return0

5、;  //颜色表大小,以字节为单位,灰度图像颜色表为1024字节,彩色图像颜色表大小为0 intcolorTablesize=0; if(biBitCount==8) colorTablesize=1024; //待存储图像数据每行字节数为4的倍数 intlineByte=(width*biBitCount/8+3)/4*4;  //以二进制写的方式打开文件 FILE*fp=fopen(bmpName,"wb"); if(fp==0)return0;  //申请位图文件头结构变量,填写文件头信息 BITMAPFILEHEADERfileH

6、ead; fileHead.bfType=0x4D42;//bmp类型  //bfSize是图像文件4个组成部分之和 fileHead.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER) +colorTablesize+lineByte*height; fileHead.bfReserved1=0; fileHead.bfReserved2=0;  //bfOffBits是图像文件前三个部分所需空间之和 fileHead.bfOffBits=54+colorTablesize;

7、  //写文件头进文件 fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp);  //申请位图信息头结构变量,填写信息头信息 BITMAPINFOHEADERhead; head.biBitCount=biBitCount; head.biClrImportant=0; head.biClrUsed=0; head.biCompression=0; head.biHeight=height; head.biPlanes=1; head.biSize=40; head.biSizeImage=lin

8、eByte*height; head.biWidth=width; head.biXPelsPerMeter=0; head.biYPelsPerMeter=0; //写位图信息头进内存 fw

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。