实验二编写图像读写程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二编写图像读写程序

实 验 二 【实验名称】 编写图像读/写程序 【实验内容】 用VC++或C#等实现无格式(. RAW)及位图(. BMP)的显示、读文件、另存文件及相互转换格式,界面设计可参考Photoshop的界面。 实验使用的操作系统是Windows XP,使用的软件是Visual C++ 6.0。 思想:打开文件,根据文件后缀名,判断如何显示图像,保存时根据选择做对应的格式转换。主要解决的问题:如何读取位图文件(*.bmp)、如何读取无格式文件(*.raw)、如何将无格式文件(*.raw)转换成位图文件(*.bmp)及如何将图像保存为位图文件(*.bmp)文件。 【实验步骤】 在VC 6.0 MFC下,创建基于单文档的工程Image; 在ImageView类中添加显示、保存图像文件所需的变量如下: BITMAP Bitmap; CString pathname; BYTE Gray; CImageApp *app; int m_nColorUse; // 实际用到的颜色数(也即颜色表数组的大小) LONG m_nDataSize; RGBQUAD* m_pColorTable; // 颜色表 LONG m_nWidth; // 位图宽度 LONG m_nHeight; // 位图高度 int m_flag; // 图像类型标记 BITMAPINFOHEADER m_bmih; // 位图信息头 BITMAPFILEHEADER m_bmfh; // 位图文件头 unsigned char * m_pImage; // 位图数据指针 保存文件(格式转换)及转换后的文件显示: 【结果分析与比较】 本实验成功实现了RAW格式和BMP格式图像文件的显示和格式转换。无格式文件(*.raw),就是指没有文件头信息,所有的字节都是用来表示各像素点的颜色信息,按从左到右、从上到下的顺序排列。位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列。通过格式转换前后文件的对比,明显位图文件比无格式文件占用的空间要大,质量相对比无格式的要好。 通过这次实验,使我对这两种格式的图像文件有了深入认识,并对其存储格式有了更深一步的学习,能够认识到不同格式文件之间的异同,也为以后进行更深一步的图像处理奠定了一定的基础。 【参考文献】 杨淑莹编著,《VC++图像处理程序设计(第二版)》,清华大学出版社,2005 赵辉, 叶子青编著,《Visual C++系统开发实例精粹》,人民邮电出版社,2005 谭明金编著,《Visual C++图形编程技巧与实例》,人民邮电出版社,2002 霍宏涛编著,《数字图像处理》,北京理工大学出版社,2002 马平编著,《数字图像处理和压缩》,电子工业出版社,2007 【附件】 主要功能函数代码如下: void CImageView::OnFileOpen() { CFileDialogdlg(TRUE,NULL,NULL,NULL,BMP(*.BMP)|*.bmp|RAW(*.RAW)| *.raw| |, this); if(dlg.DoModal()==IDOK) { CString str; // 存贮扩展名 str=dlg.GetFileExt(); // 获得文件扩展名 // 如果是RAW格式的图像,则以下打开处理 if((str==RAW)||(str==raw)) { CFile rawfile; rawfile.Open(dlg.GetPathName(),CFile::modeRead); // 打开文件 m_nDataSize=rawfile.GetLength(); // 获取文件长度 m_pImage=new unsigned char[m_nDataSize]; // 分配数据内存 rawfile.ReadHuge(m_pImage,m_nDataSize); // 读取文件 rawfile.Close(); m_nWidth=(LONG)sqrt(m_nDataSize); m_nHeight=m_nWidth; m_flag=1;

文档评论(0)

整理王 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档