GDI+实现的图片相互转换程序,可以通过命令行参数来调用

#include <gdiplus.h>  
#include <stdio.h>  
using namespace Gdiplus;
#include "stdafx.h"
#pragma comment(lib, "gdiplus.lib")
//探测PNG编码器的CLSID 函数  
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid); 

int _tmain(int argc, WCHAR* argv[])
{
	GdiplusStartupInput gdiplusStartupInput;  
	ULONG_PTR gdiplusToken;  
	GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);  
	CLSID   encoderClsid;  
	Status  stat;  
	Image*   image = new Image(argv[2]);  
	// 探测PNG编码器的CLSID  
	GetEncoderClsid(argv[1], &encoderClsid);  
//	stat = image->Save(L"1.png", &encoderClsid, NULL);  
	stat = image->Save(_T("1.png"), &encoderClsid, NULL);  
	if(stat == Ok)  
		printf("成功!/n");  
	else  
		printf("失败: 错误码: %d/n", stat);   
	delete image;  
	GdiplusShutdown(gdiplusToken);  


	return 0;  
}
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)  
{  
	UINT  num = 0;          // 设备拥有的图片编码器数量  
	UINT  size = 0;         // 获取所有编码器描述的缓冲区大小  
	ImageCodecInfo* pImageCodecInfo = NULL;  
	GetImageEncodersSize(&num, &size);  
	if(size == 0)  
		return -1;  //失败  
	pImageCodecInfo = (ImageCodecInfo*)(malloc(size));  
	if(pImageCodecInfo == NULL)  
		return -1;  // 失败  
	GetImageEncoders(num, size, pImageCodecInfo);  
	for(UINT j = 0; j < num; ++j)  
	{  
		if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )  
		{  
			*pClsid = pImageCodecInfo[j].Clsid;  
			free(pImageCodecInfo);  
			return j;  // 成功  
		}      
	}  
	free(pImageCodecInfo);  
	return -1;  //失败  
}  
可以通过命令行参数来调用这个EXE,实现图片格式的转换,如argv[1]=image\png 时,则可以将图片转换成PNG格式,
encoderClsid


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦麦大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值