C++ BMP图片转换为PNG图片
2017-11-03 10:57
1716 查看
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
BOOL GetEncoderClsid(WCHAR* pFormat,CLSID* pClsid)
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
UINT num = 0,size = 0;
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num,&size);
if (size == 0)
{
return FALSE;
}
pImageCodecInfo = (Gdiplus::ImageCodecInfo*)(malloc(size));
if (pImageCodecInfo == NULL)
{
return FALSE;
}
GetImageEncoders(num,size,pImageCodecInfo);
BOOL bfound = FALSE;
for (UINT i = 0;!bfound && i < num; i++)
{
if (_wcsicmp(pImageCodecInfo[i].MimeType,pFormat) == 0)
{
*pClsid = pImageCodecInfo[i].Clsid;
bfound = TRUE;
}
}
GdiplusShutdown(gdiplusToken);
free(pImageCodecInfo);
return bfound;
}
BOOL BMptoPNG(LPCWSTR StrBMp,LPCWSTR StrPNG)
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
CLSID encoderClsid;
Status stat;
Image* image = NULL;
image = Gdiplus::Bitmap::FromFile(StrBMp,TRUE);
if (!GetEncoderClsid(L"image/png",&encoderClsid))
{
return FALSE;
}
stat = image->Save(StrPNG,&encoderClsid,NULL);
if (stat != Gdiplus::Ok)
{
return FALSE;
}
//Gdiplus::GdiplusShutdown(gdiplusToken);
delete image;
return TRUE;
}
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
BOOL GetEncoderClsid(WCHAR* pFormat,CLSID* pClsid)
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
UINT num = 0,size = 0;
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num,&size);
if (size == 0)
{
return FALSE;
}
pImageCodecInfo = (Gdiplus::ImageCodecInfo*)(malloc(size));
if (pImageCodecInfo == NULL)
{
return FALSE;
}
GetImageEncoders(num,size,pImageCodecInfo);
BOOL bfound = FALSE;
for (UINT i = 0;!bfound && i < num; i++)
{
if (_wcsicmp(pImageCodecInfo[i].MimeType,pFormat) == 0)
{
*pClsid = pImageCodecInfo[i].Clsid;
bfound = TRUE;
}
}
GdiplusShutdown(gdiplusToken);
free(pImageCodecInfo);
return bfound;
}
BOOL BMptoPNG(LPCWSTR StrBMp,LPCWSTR StrPNG)
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
CLSID encoderClsid;
Status stat;
Image* image = NULL;
image = Gdiplus::Bitmap::FromFile(StrBMp,TRUE);
if (!GetEncoderClsid(L"image/png",&encoderClsid))
{
return FALSE;
}
stat = image->Save(StrPNG,&encoderClsid,NULL);
if (stat != Gdiplus::Ok)
{
return FALSE;
}
//Gdiplus::GdiplusShutdown(gdiplusToken);
delete image;
return TRUE;
}
相关文章推荐
- 保存一个免费的在线的图片转换工具网站,支持BMP,JPG,IOC,PNG和GIF
- [转载]C#图片格式(JPG,BMP,PNG,GIF)等转换为ICO图标
- java将图片缩放实现类(能将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换)
- C++中使用CAtlHttpClient显示网络图片的方法,支持png,bmp,gif图片格式
- 二进制图片转换成BMP位图(C++)
- java 将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换
- C# 图片格式(JPG,BMP,PNG,GIF)等转换为ICO图标
- C# 图片格式(JPG,BMP,PNG,GIF)等转换为ICO图标
- Delphi png、bmp、gif等图片格式转换成jpg
- java 将bmp图片转换为png图片
- C++中使用CAtlHttpClient显示网络图片的方法,支持png,bmp,gif图片格式
- 实现图片由 720*480 的bmp 转换成 1920*1080 的 png
- 将iPhone中tga格式的图片转换为其他格式(png、bmp等)的工具(Windows版本)
- BMP图片的数据存储格式说明及显示数据的转换
- C#保存PictureBox或Bitmap图片为bmp|png|gif|jpg格式
- java实现base64字符串转换png图片
- IOS开发之保存图片到Documents目录及PNG,JPEG格式相互转换
- BMP、GIF、JPEG、PNG以及其他图片格式简介
- 各种图片编码格式详解(bmp,jpg,png)
- inkscape将png图片转换为svg格式的矢量图