FILE *fp; // 定义一个文件指针
BMP_HEADER bmpHeader; // 定义一个 BMP 文件头的结构体
BMP_INFO bmpInfo; // 定义一个 BMP 文件信息结构体 if((fp = fopen(BMPFile.c_str(), "wb")) == NULL){
MSG("Cann't open the file!","Error",MB_OK);
return -1;
} bmpInfo.bSize = 40; //固定
bmpInfo.bWidth = Width;
bmpInfo.bHeight = Height;
bmpInfo.bBitCount = BitCount; //计算四字节对齐的宽度*高度
long ImageSize4bytes;
ImageSize4bytes = bmpInfo.bWidth*sizeof(BMP_POINT); if(ImageSize4bytes % 4!=0){ImageSize4bytes += 4-(ImageSize4bytes % 4);}
ImageSize4bytes *= bmpInfo.bHeight;
bmpInfo.bImageSize = ImageSize4bytes;
bmpInfo.bCompression = 0;
bmpInfo.bClrImportant = 0;
bmpInfo.bClrUsed = 0;
bmpInfo.bXPelsPerMeter = 0;
bmpInfo.bYPelsPerMeter = 0;
bmpInfo.bPlanes = 1; // 调色板数量 bmpHeader.bType = 0x4D42; //BM ascii码
bmpHeader.bOffset = 54;
bmpHeader.bSize = bmpInfo.bImageSize + bmpHeader.bOffset;
bmpHeader.bReserved1 = 0;
bmpHeader.bReserved2 = 0; //让 fp 指向 bmp 文件的开始
//第 2 个参数是偏移量 第三个参数是文件起始地址 所以此函数执行成功后文件指
fseek(fp, 0, SEEK_SET);
// 写入文件
fwrite(&bmpHeader, sizeof(bmpHeader), 1, fp);
fwrite(&bmpInfo, sizeof(bmpInfo), 1, fp);
fwrite(pData, 1, bmpInfo.bImageSize, fp); fclose(fp);
写BMP文件格式
原创
©著作权归作者所有:来自51CTO博客作者程序无悔的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java实验控制语句与类
java的基本流程控制语句及例子 public class Flow { /* * 1.顺序结构(最基础的) * 从上往下,依次执行。 * 2.选择结构:按照不同的选择,执行不同的代码 * 3.循环结构:代码的重复多次的执行 *
java实验控制语句与类 java基本流程控制 流程控制 java System