欢迎来到天天文库
浏览记录
ID:38188640
大小:251.50 KB
页数:6页
时间:2019-05-25
《位图rgb到gray》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、*打开和保存bmp文件,这里使用自定义数据结构Bitmap,相关函数定义如下:bmp.h:intCreateBitmap(Bitmap*bmp,intwidth,intheight,intbitCount);voidReleaseBitmap(Bitmap*bmp);intCheckPath(char*path);intReadBitmap(char*path,Bitmap*bmp);intSaveBitmap(char*path,Bitmap*bmp);*图像格式转换basicprocess.h:intRGB2Gray(Bitmap*src,Bitmap*dst);intG
2、ray2RGB(Bitmap*src,Bitmap*dst);6**-------------------------------------FileInfo------------------------------------------------------29*位图文件结构及基本函数定义打开和保存bmp文件31typedefunsignedshortWORD;32typedefunsignedlongDWORD;33typedeflongLONG;34typedefunsignedcharBYTE;*位图文件头结构14字节*/37typedefstructtagBI
3、TMAPFILEHEADER{38WORDbfType;DWORDbfSize;WORDbfReserved1;WORDbfReserved2;DWORDbfOffBits;43}BITMAPFILEHEADER;45/*位图信息头结构40字节*/46typedefstructtagBITMAPINFOHEADER{47DWORDbiSize;//结构长度40BLONGbiWidth;LONGbiHeight;WORDbiPlanes;//151WORDbiBitCount;//表示颜色要用到的位数52DWORDbiCompression;//压缩格式53DWORDbiSiz
4、eImage;//位图占用字节数=biWidth'(4的整倍数)*biHeight54LONGbiXPelsPerMeter;//水平分辨率55LONGbiYPelsPerMeter;//垂直分辨率56DWORDbiClrUsed;//本图像用到的颜色数DWORDbiClrImportant;//本图像的重要颜色数58}BITMAPINFOHEADER;60/*调色板4字节*/61typedefstructtagRGBQUAD{62BYTErgbBlue;BYTErgbGreen;BYTErgbRed;BYTErgbReserved;}RGBQUAD;68/*定义图像信息*/
5、69typedefstructtagBITMAPINFO{70BITMAPINFOHEADERbmiHeader;71RGBQUADbmiColors[1];72}BITMAPINFO;74/*定义位图图像*/75typedefstruct_Bitmap76{77BITMAPFILEHEADERbmfh;BITMAPINFOHEADERbmih;79intwidth;intheight;intbitCount;//8或者24intimageSize;//图像数据大小(imageSize=height*widthStep)字节83BYTE*imageData;//排列的图像数据
6、84intwidthStep;//排列的图像行大小85}Bitmap;88*位图创建函数创建一个Bitmap结构,并为图像数据分配空间90*使用方法:91*Bitmap*bmp=(Bitmap*)malloc(sizeof(Bitmap));92*ret=CreateBitmap(bmp,50,50,3);94intCreateBitmap(Bitmap*bmp,intwidth,intheight,intbitCount){bmp->width=width;bmp->height=height;bmp->bmih.biWidth=width;bmp->bmih.biHeig
7、ht=height;bmp->widthStep=(int)((width*bitCount+31)/32)*4;//计算排列的宽度bmp->imageSize=bmp->height*bmp->widthStep*sizeof(BYTE);//计算排列的图像大小if(bitCount==8){bmp->bitCount=8;bmp->bmfh.bfType=0x4d42;//注意是4d42等等}elseif(bitCount==24){处理}else{printf("Error(CreateBitma
此文档下载收益归作者所有