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; }