Change的文章

  • 最简单的图片格式转换支持4种图片类型基于CImage实现

    背景图片文件我们常常在日常生活中都会使用,与我们的生活息息相关。你有没有想过,图片文件不同格式之间有什么差别吗?它们之间是如何进行转换的?好吧,老实说,我也没有想过。如果让你开发一个图片格式转换器,估计你也会觉得很难吧,毕竟不同图片类型的文件格式都不清楚是怎样的。
    如果,我告诉你有这么一种方法,你不需要了解任何的图片格式,而且三四行代码就可以实现图片格式转换了,你会相信吗?事实上,这是可以实现的,本文讲的就是这么一种最简单的方法。使用 CImage 类提供的接口实现,支持.PNG、.JPG、 .GIF、.BMP 等 4 种格式图片的转换。
    那么,我就把程序的实现原理和过程写成文档,分享给大家。
    实现原理先来介绍下 CImage 类,CImage类是ATL和MFC共用的一个类,其头文件为atlimage.h,主要用于图片文件的打开,显示与保存。这里需要注意的是,VC6.0版本不支持 CImage!
    使用 CImage 实现图片类型转换的原理是:

    首先,CImage::Load函数,根据图片文件路径,加载图片到 CImage 对象中
    然后,调用CImage::Save函数,实现将位图存储为图片文件,图片类型根据传入的保存文件名确定。支持.PNG、.JPG、.GIF、.BMP等 4 种格式图片的生成

    就这样,简单的两步操作,就可以将不同格式的图片转换成任意格式的图片文件了,支持.PNG、.JPG、.GIF、.BMP等 4 种格式文件的相互转换。
    编程实现头文件#include <atlimage.h>
    图片类型转换BOOL ConverPicture(){ CImage image; // 加载图片 image.Load("1.jpg"); // 保存图片 // bmp格式 image.Save("ConverPicture.bmp"); // png格式 image.Save("ConverPicture.png"); // jpg格式 image.Save("ConverPicture.jpg"); // gif格式 image.Save("ConverPicture.gif"); return TRUE;}
    程序测试直接运行程序,1.jpg 图片成功转换成.PNG、.JPG、.GIF、.BMP 4 种格式图片文件:

    总结这个程序原理很简单,但是要注意的是,这种方法不适用于VC6.0开发环境,因为VC6.0上不支持 CImage 类的使用。
    参考参考自《Windows黑客编程技术详解》一书
    1  留言 2018-12-20 12:35:52
  • 最简单的位图保存方法之基于CImage类实现

    背景我们在使用VS实现图像绘图的时候,往往也会用到保存位图的功能。也就是,怎么根据位图的句柄,然后怎么把位图保存成本地的图片格式文件。如果,你在看这篇文章之前,你自己了解过些资料,那么你可能会说,那就根据BMP位图格式,设置文件头信息、设置位图头信息、设置调色版、最后写入位图数据。或许,看到这里,很多初学者都会晕吧。如果不了解位图文件格式,那是不是就没有简单的保存方式了?
    答案是有!有一种最简单的方法,不需要你了解任何图片格式,就根据位图句柄保存成任意的图片格式,保存为.PNG、.JPG、.GIF、.BMP格式图片都没有问题。因为,我们使用的是 CImage 类实现的,这个类中已经封装好现成的函数供我们调用了!
    那么,我就把程序的实现原理和过程写成文档,分享给大家。
    实现原理先来介绍下 CImage 类,CImage类是ATL和MFC共用的一个类,其头文件为atlimage.h,主要用于图片文件的打开,显示与保存。这里需要注意的是,VC6.0版本不支持 CImage!
    使用 CImage 实现位图保存的原理是:

    首先,CImage::Attach函数,实现将位图句柄hBitmap附加到CImage对象上
    然后,调用CImage::Save函数,实现将位图存储为图片文件,图片类型根据传入的保存文件名确定。支持.PNG、.JPG、.GIF、.BMP等 4 种格式图片的生成

    就这样,简单的两步操作,就可以将位图保存为图片文件了。
    编程实现头文件#include <atlimage.h>
    根据位图句柄保存为图片文件BOOL SaveBmp(HBITMAP hBmp){ CImage image; // 附加位图句柄 image.Attach(hBmp); // 保存成图片 // bmp格式 image.Save("mybmp1.bmp"); // png格式 image.Save("mybmp1.png"); // jpg格式 image.Save("mybmp1.jpg"); // gif格式 image.Save("mybmp1.gif"); return TRUE;}
    程序测试直接运行程序,成功生成.PNG、.JPG、.GIF、.BMP 4 种格式图片文件:

    总结这个程序原理很简单,但是要注意的是,这种方法不适用于VC6.0开发环境,因为VC6.0上不支持 CImage 类的使用。
    参考参考自《Windows黑客编程技术详解》一书
    2  留言 2018-12-20 12:36:01

发送私信

如果哪天我们真的久别重逢,我希望你别来无恙

13
文章数
14
评论数
eject