IStream* CpictureDemoDlg::StretchPic(const WCHAR *path,const WCHAR* format, int width, int heigh)
{
Bitmap orgpic(path) ;
Image *Despic = orgpic.GetThumbnailImage(width,heigh) ;
IStream* pstm = NULL;
CLSID encoderClsid ;
GetEncoderClsid(format,&encoderClsid) ;
Status sta =Despic->Save(TEXT("d:\\2.bmp"),&encoderClsid,0) ; //Despic->Save(pstm, &encoderClsid,0);
if (sta == Ok)
{
return pstm ;
}
return NULL ;
}
int CpictureDemoDlg::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;
}