转:GetCodecClsid--提供多种转换功能的GDIPLUS
The GDI+
--------------------------------------------------------------------------------
This article was contributed by Leandro Gustavo Biss Becker - CEFET-PR.
Environment: [VC6 SP4, NT4 SP3, W2k, Win 9x]
I have found that the Microsft GDI+ can do many cool things for you. Previously you had to find code or write your own code to do the same things. One of these things is the ability to load or save the following types of images:
BMP
DIB
RLE
GIF
JPEG
EMF
TIFF
PNG
These can be loaded with just a few lines of code like this:
#include <Gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
Image Im(L"c:\\fig.jpg", FALSE);
CLSID GifCodec;
GetCodecClsid(L"image/gif", &GifCodec);
Im.Save(L"c:\\fig.gif", &GifCodec, NULL);
Here is the code to GetCodecClsid
int GetCodecClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num = 0; // number of image encoders
UINT size = 0; // size of the image encoder array in bytes
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1; // Failure
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
return j; // Success
}
} // for
return -1; // Failure
} // GetCodecClsid
- · 在对话框标题栏做出动画示例源程序
- · 对话框的菜单、控件使用COMMAND_UI
- · VC6.0中如何改变对话框的…
- · VC++程序中用对话框的形…
- · 在VC++6.0开发中实现全屏…
- · 如何在对话框中响应键盘…
- · VC6中两个对话框的同时显…
- · 利用MFC的CFileDialog生…
- · 通用的控件之间的拖放方法(DragandDrop)
- · 拷贝字符串到Windows剪贴板
- · VC++实现拨号上网程序详解
- · 如何把VC++代码转换成VB代码?
- · ThinkingagaininC++(三)缺省参数的误区
- · 非议MFC(三)库代码的质量问题
- · 非议MFC(二)逻辑上的不完备
- · ThinkingagaininC++(二)自赋值是非公断
- · 非议MFC(一)宏和类型定…
- · MFC类中获得其它类指针
- · VisualC++/MFC指南(1):…
- · Ado 实现C++对象的存取
- · 典型网络数据库系统软件设计
- · 使用ADO控件打造另类的聊天室
- · 魔法单词记忆——DAO访问ACCESS数据库
- · VC++ Oracle 开发入门
- · SQL Server 索引结构及其使用(四)
- · SQL Server 索引结构及其使用(三)
- · SQL Server 索引结构及其使用(二)
- · SQL Server 索引结构及其使用(一)
- · VC++中使用DB-Library编程(二)(SQL Server)
- · 用ADO进行数据库编程
- · 使用ADO编写数据库应用程…
- · 几种VC++数据库开发技术…
- · 用VisualC++开发数据库程…
- · 用VisualC++开发数据库应…
- · 使用OLEDB编写数据库应用…
- · 在VisualC++中用ADO进行…
- · VC下关于debug和release的不同的讨论
- · VC++的链接错误LNK2001
