GreenOpenPaint的实现(六)图片的保存和打开

    xiaoxiao2021-03-26  20

    如果只是直接的图片保存和打开,是没有很多内容的。但是我这里,将EXIF的信息融入其中,使得图像处理的结果能够保存下来。这样就非常有价值意义了。

    所有的操作都放在DOC中进行处理。 我之前已经对EXIF的操作进行总结,这里进行引入 #include "Exif.h" /*读取 EXIFINFO m_exifinfo; FILE* hFile=fopen(FilePathName.c_str(),"rb"); if (hFile){ memset(&m_exifinfo,0,sizeof(EXIFINFO)); Cexif exif(&m_exifinfo); exif.DecodeExif(hFile); fclose(hFile); 写入 Cexif ceif; sprintf_s(cbuf2,"123"); int iret = ceif.WriteExif2Image(FilePathName.c_str(),PropertyTagCopyright,cbuf2); if(iret == 0) AfxMessageBox("写入EXIF信息成功!"); else AfxMessageBox("写入EXIF信息失败!"); */ 并且在doc中打开和保存函数中进行引入。 //将文件的处理集中在DOC中是非常正确的方法 BOOL CGreenOpenPaintDoc::OnOpenDocument(LPCTSTR lpszPathName) {     if (!CDocument::OnOpenDocument(lpszPathName))         return FALSE;     m_filename = CT2CA(lpszPathName);     //读入文件     m_image.Load(CT2CA(lpszPathName));     m_fScaleFactor = ZOOM_NORMAL;     //读入EXIF     FILEhFile=fopen(CT2CA(lpszPathName),"rb");     if (hFile){         memset(&m_exifinfo,0,sizeof(EXIFINFO));         Cexif exif(&m_exifinfo);         exif.DecodeExif(hFile);         fclose(hFile);         //已经获得了保存的数据         m_bitmapInfo =  m_exifinfo.CopyRight;     }     return TRUE; } //保存文件,其实没有修改文件,只是修改了EXIF信息 BOOL CGreenOpenPaintDoc::OnSaveDocument(LPCTSTR lpszPathName) {     // TODO: 在此添加专用代码和/或调用基类     CString cstring =_T("GREENOPEN");     if (m_filename !=  "empty")     {         int iret = ceif.WriteExif2Image(m_filename,PropertyTagCopyright,cstring);     }     //这里false     return FALSE; } 注意OnSaveDocument的return false。这样已经达到融合EXIF的目的。   GreenOpenPaint小结: 一直以来,我都想实现一个类似MSPaint的程序。经过春节几天的集中研究,应该说目的基本达到。实现细节都在代码和手札中,反思几条务虚的东西: 1、代码重构是不断进行的。一旦停止,那么对于“最好”的追求也就停止了。优秀程序员应该去不断磨砺自己的技能; 2、MFC提供了强大的基础框架,很多东西需要继续研究; 3、寻找到符合问题解决的基础模型(比如我现在建立的几个),是解决问题的首要。 下一步,GreenOpenPaint将运用于符合这一类问题解决的所有项目中,并且在这个过程中,不断完善。相关资料也将在第一时间开放出去。 2017年1月28日  

    全部代码:

    http://files.cnblogs.com/files/jsxyhelu/GreenOpenPaint.rar

    转载请注明原文地址: https://ju.6miu.com/read-660980.html

    最新回复(0)