系列文章目录
C++实现爬虫!
C++宽窄字符转化与输出!
C++文件读写(最全方法)
C++实现窗口截图
前言
C++如果本身想要实现图片格式的转化,是比较困难的
但在VS中,想要做到这一点就非常简单了,因为VS的C++开发环境中,自带ATL模板库
其中,模板库atlimage.h,有很多实用的方法可以对图片进行操作
比如该库内就有一个Cimage类可用于实现图片格式转换,不清楚的可以查看C++实现窗口截图一文,其简单的使用到了该类以及对该类进行了简单介绍
一、主要流程
- 建立CImage类对象
- 调用Load方法加载需要进行转化的图片
- 调用save方法保存为想要转换的格式
是不是很简单!让我们直接上代码
二、代码
#include<string>
#include<atlimage.h>
using namespace std;
//oldPic:要转换的图片名称
//newPic:转换后保存的图片名称
bool Convert(const std::wstring& oldPic, const std::wstring& newPic)
{
CImage image; //创建Cimage对象
image.Load(oldPic.data()); //加载要转换的图片
HRESULT hRes = image.Save(newPic.data(), Gdiplus::ImageFormatBMP); //转换为指定的格式,可指定其它格式
image.ReleaseDC(); //释放DC
if (hRes != S_OK) return false;
return true;
}
int main() {
Convert(L"1.png",L"1.bmp");
}
这里写了一个函数,相信大家应该都能看得懂,传入的两个参数分别为要进行转化的图片,以及转化后保存的图片名称
不过我这里使用的都是宽字符wstring,所以使用的时候,你必须向这样写L""
,即字符串前面添加L,才代表着宽字符
函数里面的逻辑也不难,分别按三个步骤走就是了,只是调用save函数的第二个参数,可能有点繁琐,我直接将所有的格式都放在下面了,可以直接复制即可
可转换的图片格式参数:
Gdiplus::ImageFormatUndefined
Gdiplus::ImageFormatMemoryBMP
Gdiplus::ImageFormatBMP
Gdiplus::ImageFormatEMF
Gdiplus::ImageFormatWMF
Gdiplus::ImageFormatJPEG
Gdiplus::ImageFormatPNG
Gdiplus::ImageFormatGIF
Gdiplus::ImageFormatTIFF
Gdiplus::ImageFormatEXIF
Gdiplus::ImageFormatIcon
Gdiplus::ImageFormatHEIF
Gdiplus::ImageFormatWEBP
可根据后缀名确定要转换的格式
版权声明:本文为weixin_50964512原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。