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

简介: 如果只是直接的图片保存和打开,是没有很多内容的。但是我这里,将EXIF的信息融入其中,使得图像处理的结果能够保存下来。这样就非常有价值意义了。所有的操作都放在DOC中进行处理。我之前已经对EXIF的操作进行总结,这里进行引入#include "Exif.

如果只是直接的图片保存和打开,是没有很多内容的。但是我这里,将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



目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
目录
相关文章
|
PHP 调度 数据安全/隐私保护
【源码解读】TP5读取本地图片输出后,设置header头无效,图片乱码
在Thinkphp程序中读取本地图片,做出加工处理(如合并二维码等水印),然后输出给客户端,一直输出图片内容乱码。 设置了header image/png 不生效。 写下这篇TP源码排查文章,看看问题到底出现在哪个步骤。
559 0
【源码解读】TP5读取本地图片输出后,设置header头无效,图片乱码
|
JavaScript
js鼠标放图片上==放大镜显示效果demo效果示例(整理)
js鼠标放图片上==放大镜显示效果demo效果示例(整理)
|
JavaScript 前端开发
Base64图片页面显示
Data URI scheme 是一种将小容量数据直接嵌入到文档中的技术。将 Base64 编码的图片数据直接嵌入到 img 标签的 src 属性中,如下所示:
183 0
|
Python
pygame包打开的图片要默认放在什么地方?
pygame包打开的图片要默认放在什么地方?
465 0
pygame包打开的图片要默认放在什么地方?
|
计算机视觉 Python
OpenCV学习笔记(一)【图片读入、显示、保存】
OpenCV学习笔记(一)【图片读入、显示、保存】
OpenCV学习笔记(一)【图片读入、显示、保存】
图片保存v2
图片保存v2图片保存v2图片保存v2
图片保存v2
|
前端开发 Android开发
Canvas的保存和恢复的demo
Canvas的保存和恢复的demo
|
API Android开发 开发者
关于安卓高版本图片保存
安卓高版本图片保存
151 0
|
存储 C语言 C++
MAT文件打开方法汇总及其他操作
MAT文件打开方法汇总及其他操作
2689 0