clq

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

http://topic.csdn.net/t/20041102/15/3514450.html

首先创建一个固定大小(目标)的图片,然后在此图片上画一个即可.
代码如下:(将图象变为200*200)

GdiplusStartupInput   gdiplusStartupInput;
      ULONG_PTR   gdiplusToken;
      GdiplusStartup(&gdiplusToken,   &gdiplusStartupInput,   NULL);

CLSID   encoderClsid;
EncoderParameters   encoderParameters;
ULONG   quality;
Status   stat;
Image   image(L "1.jpg ");
Bitmap   bitmap(200,   200,   PixelFormat32bppARGB);
Graphics   graph(&bitmap);
graph.DrawImage(&image,   Rect(0,0,200,200));
GetEncoderClsid(L "image/jpeg ",   &encoderClsid);
//构造编码参数列表
//数组中只包含一个EncoderParameter对象
encoderParameters.Count   =   1;
encoderParameters.Parameter[0].Guid   =   EncoderQuality;
//参数类型为LONG
encoderParameters.Parameter[0].Type   =   EncoderParameterValueTypeLong;
//只设置一个参数
encoderParameters.Parameter[0].NumberOfValues   =   1;


//设置JPEG图片质量为最好
quality   =   100;
encoderParameters.Parameter[0].Value   =   &quality;
stat   =   bitmap.Save(L "1_2.jpg ",   &encoderClsid,   &encoderParameters);
GdiplusShutdown(gdiplusToken);

-------------------------------------------------------------------------------

http://blog.csdn.net/haogeai123/article/details/6621612

GDI+ GetEncoderClsid()函数的示例

147人阅读 评论(1) 收藏 举报
  1. int   GetEncoderClsid(const   WCHAR*   format,   CLSID*   pClsid)   
  2. {   
  3.  UINT     num   =   0;                     //   number   of   image   encoders   
  4.  UINT     size   =   0;                   //   size   of   the   image   encoder   array   in   bytes   
  5.   
  6.  ImageCodecInfo*   pImageCodecInfo   =   NULL;   
  7.   
  8.  GetImageEncodersSize(&num,   &size);   
  9.  if(size   ==   0)   
  10.   return   -1;     //   Failure   
  11.   
  12.  pImageCodecInfo   =   (ImageCodecInfo*)(malloc(size));   
  13.  if(pImageCodecInfo   ==   NULL)   
  14.   return   -1;     //   Failure   
  15.   
  16.  GetImageEncoders(num,   size,   pImageCodecInfo);   
  17.   
  18.  for(UINT   j   =   0;   j   <   num;   ++j)   
  19.  {   
  20.   if(   wcscmp(pImageCodecInfo[j].MimeType,   format)   ==   0   )   
  21.   {   
  22.    *pClsid   =   pImageCodecInfo[j].Clsid;   
  23.    free(pImageCodecInfo);   
  24.    return   j;     //   Success   
  25.   }           
  26.  }   
  27.   
  28.  free(pImageCodecInfo);   
  29.  return   -1;     //   Failure   
  30. }   
使用示例:
  1. Bitmap* m_pBackBmp = ::new Bitmap((HBITMAP)::GetCurrentObject(GetDC()->m_hDC, OBJ_BITMAP),NULL);  
  2.     CLSID pngClsid;  
  3.     GetEncoderClsid(_T("image/png"), &pngClsid);  
  4.     m_pBackBmp->Save(_T("bk.png"),&pngClsid,NULL);  
可支持的图片格式:
  1. CLSID encoderClsid  
  2.   
  3.     GetEncoderClsid(L"image/png", &encoderClsid);    //png  
  4.   
  5.      GetEncoderClsid(L"image/bmp", &encoderClsid);  
  6.   
  7.      GetEncoderClsid(L"image/gif", &encoderClsid);  
  8.   
  9.      GetEncoderClsid(L"image/jpeg", &encoderClsid);  
  10.   
  11.      GetEncoderClsid(L"image/tiff", &encoderClsid);  

 主要是最近在学习GDI+编程过程中遇到了关于GetEncoderClsid函数的问题,这个函数原来是要自己去实现的。现在在这里把这个函数的一个实现示例记录下来,方便以后查找和参考。
posted on 2011-11-21 09:24  clq  阅读(601)  评论(0编辑  收藏  举报