其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
用GDI+转换图形格式

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

//用GDI+转换图形格式

#include "afxdtctl.h"
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#include "GdiPlus.h"
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
#endif

INT GetEncoderClsid(const WCHAR* format, CLSID* pClsid);  // helper function

INT main()
{
   // Initialize GDI+.
   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR gdiplusToken;
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

   CLSID   encoderClsid;
   Status  stat;
   //Image*   image = new Image(L"C:\\Test.jpg"); //这句在 MFC下报错
   Image*   image = NULL;
   image = Bitmap::FromFile(L"C:\\Test.jpg", TRUE);
   

   // Get the CLSID of the PNG encoder.
   GetEncoderClsid(L"image/bmp", &encoderClsid);

   stat = image->Save(L"C:\\Test.bmp", &encoderClsid, NULL);

   if(stat == Ok)
      printf("Bird.png was saved successfully\n");
   else
      printf("Failure: stat = %d\n", stat); 

   delete image;
   GdiplusShutdown(gdiplusToken);
   return 0;
}

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;
    
    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;
            free(pImageCodecInfo);
            return j;  // Success
        }    
    }
    
    free(pImageCodecInfo);
    return -1;  // Failure
}
  


//另
image/bmp 
image/jpeg 
image/gif 
image/tiff 
image/png

需要下载相应的GDI+库等,建议将VC SDK升级到最新
升级地址:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ 

 


 

 




相关文章

相关软件