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()函数的示例
- 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
- }
- Bitmap* m_pBackBmp = ::new Bitmap((HBITMAP)::GetCurrentObject(GetDC()->m_hDC, OBJ_BITMAP),NULL);
- CLSID pngClsid;
- GetEncoderClsid(_T("image/png"), &pngClsid);
- m_pBackBmp->Save(_T("bk.png"),&pngClsid,NULL);
- CLSID encoderClsid
- GetEncoderClsid(L"image/png", &encoderClsid); //png
- GetEncoderClsid(L"image/bmp", &encoderClsid);
- GetEncoderClsid(L"image/gif", &encoderClsid);
- GetEncoderClsid(L"image/jpeg", &encoderClsid);
- GetEncoderClsid(L"image/tiff", &encoderClsid);
主要是最近在学习GDI+编程过程中遇到了关于GetEncoderClsid函数的问题,这个函数原来是要自己去实现的。现在在这里把这个函数的一个实现示例记录下来,方便以后查找和参考。