通过GDI+我们可以很方便的对bmp、jpeg、gif、tiff、png格式的图片进行转换。
来源:互联网 发布:求矩阵的奇异值分解 编辑:程序博客网 时间:2024/04/28 00:01
引言:通过GDI+我们可以很方便的对bmp、jpeg、gif、tiff、png格式的图片进行转换。
步骤:
1) 通过GdiplusStartup初始化GDI+,以便后续的GDI+函数可以成功调用。
2) 通过GetImageEncodersSize获取GDI+支持的图像格式编码器种类数numEncoders以及ImageCodecInfo数组的存放大小size。
3) 通过malloc为ImageCodecInfo数组分配足额空间。
4) 通过GetImageDecoders获取所有的图像编码器信息。
5) 查看ImageCodecInfo.MimeType,查找符合的图像编码器的Clsid。
6) 释放步骤3)分配的内存。
7) 创建Image对象并加载图片。
8) 调用Image.Save方法进行图片格式转换,并把步骤3)得到的图像编码器Clsid传递给它。
9) 释放Image对象。
10) 通过GdiplusShutdown清理所有GDI+资源。
示例:
- #include <windows.h>
- #include <gdiplus.h>
- #include <stdio.h>
- using namespace Gdiplus;
- #pragma comment(lib,"gdiplus")
- int GetEncoderClsid(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;
- //2.获取GDI+支持的图像格式编码器种类数以及ImageCodecInfo数组的存放大小
- GetImageEncodersSize(&num, &size);
- if(size == 0)
- return -1; // Failure
- //3.为ImageCodecInfo数组分配足额空间
- pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
- if(pImageCodecInfo == NULL)
- return -1; // Failure
- //4.获取所有的图像编码器信息
- GetImageEncoders(num, size, pImageCodecInfo);
- //5.查找符合的图像编码器的Clsid
- for(UINT j = 0; j < num; ++j)
- {
- if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
- {
- *pClsid = pImageCodecInfo[j].Clsid;
- free(pImageCodecInfo);
- return j; // Success
- }
- }
- //6.释放步骤3分配的内存
- free(pImageCodecInfo);
- return -1; // Failure
- }
- INT main()
- {
- GdiplusStartupInput gdiplusStartupInput;
- ULONG_PTR gdiplusToken;
- //1.初始化GDI+,以便后续的GDI+函数可以成功调用
- GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
- CLSID encoderClsid;
- Status stat;
- //7.创建Image对象并加载图片
- Image* image = new Image(L"f://11.bmp");
- // Get the CLSID of the PNG encoder.
- GetEncoderClsid(L"image/png", &encoderClsid);
- //8.调用Image.Save方法进行图片格式转换,并把步骤3)得到的图像编码器Clsid传递给它
- stat = image->Save(L"11.png", &encoderClsid, NULL);
- if(stat == Ok)
- printf("Bird.png was saved successfully/n");
- else
- printf("Failure: stat = %d/n", stat);
- //9.释放Image对象
- delete image;
- //10.清理所有GDI+资源
- GdiplusShutdown(gdiplusToken);
- return 0;
- }
- 通过GDI+我们可以很方便的对bmp、jpeg、gif、tiff、png格式的图片进行转换。
- GDI+我们可以很方便的对bmp、jpeg、gif、tiff、png格式的图片进行转换
- GDI+实现图片格式转换(bmp、jpeg、gif、tiff、png) .
- GDI+实现图片格式转换(bmp、jpeg、gif、tiff、png)
- GDI+实现图片格式转换(bmp、jpeg、gif、tiff、png)
- 利用jpedal进行pdf转换成jpeg,jpg,png,tiff,tif等格式的图片
- 利用jpedal进行pdf转换成jpeg,jpg,png,tiff,tif等格式的图片
- GDI+ 句柄存图,bmp | jpeg | gif | tiff | png
- AE+C# 导出图片(BMP、JPEG、GIF、PNG、TIFF)
- VB6.0用GDI+保存图片为JPG、TIFF、PNG、GIF、BMP等格式
- VB6.0用GDI+保存图片为JPG、TIFF、PNG、GIF、BMP等格式
- HBITMAP另存为JPEG/PNG/TIFF/GIF/BMP
- jpg、jpeg、png、gif、bmp、tiff、ai、cdr、eps 图片格式的区别
- 利用GDI+实现BMP、JPEG、GIF图像格式的转换
- Android 获取图片资源格式(png、jpeg、gif、bmp、...)
- SWT图片显示,支持JPEG,GIF(动画),BMP,ICO,PNG和TIFF
- SWT图片显示,支持JPEG,GIF(动画),BMP,ICO,PNG和TIFF
- Windows下OpenGL轻松加载BMP, GIF, JPEG, PNG, and TIFF图片
- hdu 4655——Cut Pieces
- CentOS 安装MongoDB
- 设置JqueryUI DatePicker默认语言为中文
- mysql 使用经验
- 神奇的图像处理算法(Amazing algorithms to enhance or transform images)
- 通过GDI+我们可以很方便的对bmp、jpeg、gif、tiff、png格式的图片进行转换。
- strcpy与 memcpy
- 互联网本质就是广告,就不要想离开他
- 【设计模式】学习笔记8:命令模式(Command)
- 计算机与女人
- 面试时比较漂亮的回答
- 最近写关于window服务程序的心得
- zend framework2使用教程【四】–翻译和样式
- C#使用正则表达式解析超链接文本和地址