欢迎来到天天文库
浏览记录
ID:59357333
大小:215.50 KB
页数:5页
时间:2020-09-04
《实现8位位图颜色的取反.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一题第一部分:代码#include#include#include#includeusingnamespacestd;///////////////////////////////////////////////////定义类classCBmp{public://读图像文件信息boolReadInfo(charFilePath[]);//写图像灰度信息到文本文件boolCreatebmp(charFilePath[],charszFileName[]);//生成bmp文件CBmp();//构造函数vir
2、tual~CBmp();//析构函数private:BITMAPFILEHEADERm_sBMFH;//位图文件头BITMAPINFOHEADERm_sBMIH;//位图信息头RGBQUAD*m_pPalette;//调色板BYTE*m_pBData;//位图数据};////////////////////////////CBmp::CBmp(){m_pPalette=NULL;m_pBData=NULL;}CBmp::~CBmp(){if(m_pPalette!=NULL){delete[]m_pPalette;m_pPalette=NULL;}if(m_pBData!=NULL
3、){delete[]m_pBData;m_pBData=NULL;}}////////////////////////////////////////////读图像文件boolCBmp::ReadInfo(charFilePath[]){intnSize;//用来记录调色板的大小ifstreamfin;//打开文件fin.open(FilePath,ios::binary);if(!fin){cerr<<"Openfileerror!"<4、DER));//判断是否BMP格式if(m_sBMFH.bfType!=0x4d42){cout<<"该文件不是BMP格式的文件!"<5、har*)(m_pPalette),nSize);}//读取图像数据m_pBData=newBYTE[m_sBMIH.biSizeImage];fin.read((char*)(m_pBData),m_sBMIH.biSizeImage);fin.close();returntrue;}////////////////////////////////////////写图像灰度信息到文本文件boolCBmp::Createbmp(charFilePath[],charszFileName[]){//选用的灰度转换公式不同,所得的结果基本上是一致的,但是会稍有差别。//Gray=(R*6、38+G*75+B*15)>>7;//高精度转灰度公式//Gray=R*0.299+G*0.587+B*0.114//使用浮点计算,速度较慢BYTE*pt;intt=0;intd=0;ifstreamfin;fin.open(FilePath,ios::binary);if(!fin){cerr<<"Openfileerror!"<7、///////////////////HANDLEhFile;BITMAPFILEHEADERbmfHdr;//位图文件头BITMAPINFOHEADERbi;//位图信息头RGBQUADpalette[256];//调色板BYTE*pData;//位图数据pData=newBYTE[m_sBMIH.biWidth*m_sBMIH.biHeight*1];//为数据区分配空间if(pData==NULL)return1;DWORDdwBytesWrite;intnSi
4、DER));//判断是否BMP格式if(m_sBMFH.bfType!=0x4d42){cout<<"该文件不是BMP格式的文件!"<5、har*)(m_pPalette),nSize);}//读取图像数据m_pBData=newBYTE[m_sBMIH.biSizeImage];fin.read((char*)(m_pBData),m_sBMIH.biSizeImage);fin.close();returntrue;}////////////////////////////////////////写图像灰度信息到文本文件boolCBmp::Createbmp(charFilePath[],charszFileName[]){//选用的灰度转换公式不同,所得的结果基本上是一致的,但是会稍有差别。//Gray=(R*6、38+G*75+B*15)>>7;//高精度转灰度公式//Gray=R*0.299+G*0.587+B*0.114//使用浮点计算,速度较慢BYTE*pt;intt=0;intd=0;ifstreamfin;fin.open(FilePath,ios::binary);if(!fin){cerr<<"Openfileerror!"<7、///////////////////HANDLEhFile;BITMAPFILEHEADERbmfHdr;//位图文件头BITMAPINFOHEADERbi;//位图信息头RGBQUADpalette[256];//调色板BYTE*pData;//位图数据pData=newBYTE[m_sBMIH.biWidth*m_sBMIH.biHeight*1];//为数据区分配空间if(pData==NULL)return1;DWORDdwBytesWrite;intnSi
5、har*)(m_pPalette),nSize);}//读取图像数据m_pBData=newBYTE[m_sBMIH.biSizeImage];fin.read((char*)(m_pBData),m_sBMIH.biSizeImage);fin.close();returntrue;}////////////////////////////////////////写图像灰度信息到文本文件boolCBmp::Createbmp(charFilePath[],charszFileName[]){//选用的灰度转换公式不同,所得的结果基本上是一致的,但是会稍有差别。//Gray=(R*
6、38+G*75+B*15)>>7;//高精度转灰度公式//Gray=R*0.299+G*0.587+B*0.114//使用浮点计算,速度较慢BYTE*pt;intt=0;intd=0;ifstreamfin;fin.open(FilePath,ios::binary);if(!fin){cerr<<"Openfileerror!"<7、///////////////////HANDLEhFile;BITMAPFILEHEADERbmfHdr;//位图文件头BITMAPINFOHEADERbi;//位图信息头RGBQUADpalette[256];//调色板BYTE*pData;//位图数据pData=newBYTE[m_sBMIH.biWidth*m_sBMIH.biHeight*1];//为数据区分配空间if(pData==NULL)return1;DWORDdwBytesWrite;intnSi
7、///////////////////HANDLEhFile;BITMAPFILEHEADERbmfHdr;//位图文件头BITMAPINFOHEADERbi;//位图信息头RGBQUADpalette[256];//调色板BYTE*pData;//位图数据pData=newBYTE[m_sBMIH.biWidth*m_sBMIH.biHeight*1];//为数据区分配空间if(pData==NULL)return1;DWORDdwBytesWrite;intnSi
此文档下载收益归作者所有