- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一题
第一部分:代码
#includewindows.h
#includeiostream
#includefstream
#include iomanip
using namespace std;
/////////////////////////////////////////////////
//定义类
class CBmp
{
public:
//读图像文件信息
bool ReadInfo(char FilePath[]);
//写图像灰度信息到文本文件
bool Createbmp(char FilePath[],char szFileName[] );
//生成bmp文件
CBmp();//构造函数
virtual ~CBmp();//析构函数
private:
BITMAPFILEHEADER m_sBMFH; //位图文件头
BITMAPINFOHEADER m_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)
{
delete [] m_pBData;
m_pBData = NULL;
}
}
//////////////////////////////////////////
//读图像文件
bool CBmp::ReadInfo(char FilePath[])
{
int nSize; //用来记录调色板的大小
ifstream fin;//打开文件
fin.open(FilePath,ios::binary);
if(!fin)
{
cerrOpen file error!endl;
return false;
}
//读取文件头
fin.read((char *)(m_sBMFH),sizeof(BITMAPFILEHEADER));
// 判断是否BMP格式
if(m_sBMFH.bfType!=0x4d42)
{
cout该文件不是BMP格式的文件!endl;
return false;
}
//读取文件信息头
fin.read((char *)(m_sBMIH),sizeof(BITMAPINFOHEADER));
//计算调色板的大小
nSize = m_sBMFH.bfOffBits - sizeof(BITMAPFILEHEADER) - sizeof(BITMAPINFOHEADER);
if(nSize!=0)
{
//读取调色板
m_pPalette = new RGBQUAD [nSize/4];
fin.read((char *)(m_pPalette),nSize);
}
//读取图像数据
m_pBData = new BYTE [m_sBMIH.biSizeImage];
fin.read((char *)(m_pBData),m_sBMIH.biSizeImage);
fin.close();
return true;
}
//////////////////////////////////////
//写图像灰度信息到文本文件
bool CBmp::Createbmp(char FilePath[],char szFileName[])
{
// 选用的灰度转换公式不同,所得的结果基本上是一致的,但是会稍有差别。
// Gray = (R*38 + G*75 + B*15) 7; //高精度转灰度公式
// Gray = R*0.299 + G*0.587 + B*0.114 //使用浮点计算,速度较慢
BYTE *pt;
int t=0;
int d=0;
ifstream fin;
fin.open(FilePath,ios::binary);
if(!fin)
{
cerrOpen file error!endl;
return false;
}
if(m_sBMIH.biWidth*1%4!=0) t=4-m_sBMIH.biWidth*1%4; //位图数据要求每行字节数必须是4的倍数,不足补齐t
////////
您可能关注的文档
最近下载
- 三亚市总体城市设计(2020-2035).pdf VIP
- GB51194-2016 通信电源设备安装工程设计规范.docx VIP
- (完整)混凝土回弹强度自动计算电子表格表.xls VIP
- DG∕TJ 08-2381-2021 既有多层住宅加装电梯技术标准.pdf
- 建筑物拆除与垃圾清运项目实施方案.docx VIP
- 公路水运工程试验检测师(隧道机电设施)模拟试卷2.docx VIP
- 一种基于钢铁工业多能存储的装置系统和方法.pdf VIP
- 六年级体育与健康上册全册教案.doc VIP
- 钢构件(钢梯、平台及栏杆)安装工程检验批质量验收记录.docx VIP
- 1)梅花形弹性联轴器(联轴器).pdf VIP
文档评论(0)