生成彩色bmp位图
#include <stdio.h>
#include <stdlib.h>
#define w 256 //bmp位图宽度
#define h 256/ /bmp位图高度
int WriteBMP(char*imgdata,const char* filename)//构建BMP数据结构 添加对应的属性和属性计算
{
int l=(w*3+3)/4*4;//按照4字节对齐
int bmhead[]= {l*h+54,0,54,40,w,h,1|3*8<<16,0,l*h,0,0,100,0};
FILE *fp = fopen(filename,"wb");
if(fp == NULL)
{
return -1;
}
fprintf(fp,"BM");
fwrite(&bmhead,52,1,fp);//文件参数写入
fwrite(imgdata,1,l*h,fp);//文件数据写入
fclose(fp);
return 0;
}
int main()
{
char imgdata[h][w*3];
memset(imgdata,255,w*h*3);//清空 或者创建时清空都行
for(int i=0; i<h; i++){//填写数据
for(int j =0;j<w;j++)
{
int di,dj;
if(i<123)
di = 255 - i;
if(j<123)
dj = 255 - j;
imgdata[i][j*3] = j%256;//b
imgdata[i][j*3+1] =(di+dj)%256;//g
imgdata[i][j*3+2] = i%256;//r
}
}
WriteBMP(imgdata,"test.bmp");
system("test.bmp");
return 0;
}
运行结果如下
