gdiplus将一种图片格式转换成另外一个指定图片格式,且可设置图片大小
来源:互联网 发布:跳跃网络 垃圾公司 编辑:程序博客网 时间:2024/06/06 09:53
int TransPicture(LPCWSTR lpSrcFile,LPCWSTR lpDstExt, long nWidth, long nHeight, CStringW &strDstFile) { USES_CONVERSION;CFileFind find; #ifdef UNICODEif (!find.FindFile(lpSrcFile))//文件不存在 #elseif (!find.FindFile(W2A(lpSrcFile)))//文件不存在 #endif{find.Close();return 0;}find.Close();Image *psrcImg=NULL; psrcImg = Image::FromFile(lpSrcFile);if (!psrcImg || psrcImg->GetLastStatus() != Ok){return 0;}int srcWidth=psrcImg->GetWidth(); int srcHeight=psrcImg->GetHeight(); // Construct a Graphics object based on the image. //Graphics imgGraphics(psrcImg); int nSaveWidth=nWidth;int nSaveHeight = nHeight;Bitmap *pBitmap = ::new Bitmap(nSaveWidth,nSaveHeight); Graphics bmpGraphics(pBitmap); //bmpGraphics.DrawImage(psrcImg,0,0,srcWidth,srcHeight); bmpGraphics.DrawImage(psrcImg,RectF(0,0,nSaveWidth,nSaveHeight),0,0,srcWidth,srcHeight,UnitPixel);delete psrcImg;bmpGraphics.ReleaseHDC(NULL);// Save the altered image.LPWSTR lpExt=PathFindExtensionW(lpSrcFile); LPWSTR lpExtDst = NULL;lpDstExt++;LPWSTR lpEncoder; switch(*lpDstExt) { case L'J': case L'j': lpEncoder=L"image/jpeg"; lpExtDst = L".jpeg"; break; case L'P': case L'p': lpEncoder=L"image/png"; lpExtDst = L".png"; break; case L'B': case L'b': lpEncoder=L"image/bmp"; lpExtDst = L".bmp"; break; case L'G': case L'g': lpEncoder=L"image/gif"; lpExtDst = L".gif"; break; case L't': case L'T': lpEncoder=L"image/tiff"; lpExtDst = L".tiff"; break; default: lpEncoder=L"image/jpeg"; lpExtDst = L".jpeg"; } CStringW strPicPath(lpSrcFile);CStringW strExt(lpExt);int nLen = strPicPath.Find(strExt);if(nLen>0)strPicPath=strPicPath.Left(nLen);strPicPath += lpExtDst;CLSID imgClsid; GetImageCLSID(lpEncoder,&imgClsid);Status statusSave = pBitmap->Save(strPicPath,&imgClsid,NULL); DeleteFileW(lpSrcFile);//lpSrcFile = strPicPath.GetBuffer();//strPicPath.ReleaseBuffer();strDstFile = CStringW(strPicPath);::delete pBitmap;return (statusSave == Ok )?1:0;}BOOL GetImageCLSID(const WCHAR* format, CLSID* pCLSID){UINT num = 0;UINT size = 0;ImageCodecInfo* pImageCodecInfo = NULL;GetImageEncodersSize(&num, &size);if(size == 0){return FALSE;}pImageCodecInfo = (ImageCodecInfo *)(malloc(size));if(pImageCodecInfo == NULL)return FALSE;GetImageEncoders(num, size, pImageCodecInfo); // Find for the support of format for image in the windowsfor(UINT i = 0; i < num; ++i){ //MimeType: Depiction for the program image if( wcscmp(pImageCodecInfo[i].MimeType, format) == 0){ *pCLSID = pImageCodecInfo[i].Clsid; free(pImageCodecInfo); return TRUE; } } free(pImageCodecInfo); return FALSE; }
gdiplus将一种图片格式转换成另外一个指定图片格式,且可设置图片大小
0 0
- gdiplus将一种图片格式转换成另外一个指定图片格式,且可设置图片大小
- gdiplus图片格式转换
- 如何将jpg转换成pdf图片格式
- 如何将jpg转换成pdf图片格式
- 如何将pdf转换成jpg图片格式
- 如何在线将pdf转换成图片格式
- 怎么将pdf转换成jpg图片格式
- 如何将图片格式转换成png
- 转换图片格式
- 转换图片格式
- 图片格式转换
- 图片格式转换
- 图片格式转换
- 图片格式转换
- 图片格式转换
- Glide-指定占位图、图片格式、图片大小(二)
- 将pdf在线转换成图片格式的方法
- 可以将pdf转换成jpg图片格式的方法
- signalr 教程
- 第十六周项目(1):验证算法2——希尔排序
- CodeForces 375A Divisible by Seven
- 窗口重叠,WS_CLIPCHILDREN和WS_CLIPSIBLINGS
- (数据挖掘-入门-3)基于用户的协同过滤之k近邻
- gdiplus将一种图片格式转换成另外一个指定图片格式,且可设置图片大小
- 2743: [HEOI2012]采花
- Day1之OtherDemo
- 运行时的“VFY: unable to resolve static field”错误
- autoencoder
- Java多线程全面解析
- Oracle12c新特性之基本操作
- (数据挖掘-入门-4)基于物品的协同过滤
- 【初面实习】爱奇艺测试实习生面试总结