这里有有一篇bitmap基本格式的博客,不再赘述
https://www.cnblogs.com/ZXNblog/p/4046342.html
下面讲述怎么将24为的bitmap图像变成灰色和黑白。
定义BITMAPFILEHEADER,和BITMAPINFOHEADER,并从原图像获取图像信息
typedef unsigned char uc; BITMAPFILEHEADER fileHeader;//在windows.h文件中有定义 BITMAPINFOHEADER infoHeader;//同上 FILE* f=fopen("1.bmp","rb"); FILE* f2=fopen("4.bmp","wb"); fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,f); fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,f); int height,width; width=infoHeader.biWidth; height=infoHeader.biHeight; uc* r=(uc*)malloc(width*height);//红色矩阵 uc* g=(uc*)malloc(width*height);//绿色矩阵 uc* b=(uc*)malloc(width*height);//蓝色矩阵
将图像每个像素的rgb颜色读取到数组中
void loadImage(FILE* fin,uc* r,uc* g,uc *b,int height,int width){ //fin文件指针已经过