首页 > 代码库 > VC++使用CImage在内存中Bmp转换Jpeg图片
VC++使用CImage在内存中Bmp转换Jpeg图片
unsigned
long
BMP2JPEG(
char
* pUnZipData,unsigned
long
ulUnZipDataLen,
char
** pBuffer)
{
unsigned
long
ulBufferLen = 0;
HGLOBAL
hGlobal = GlobalAlloc(GMEM_MOVEABLE, ulUnZipDataLen);
void
* pData = http://www.mamicode.com/GlobalLock(hGlobal);
memcpy
(pData, pUnZipData, ulUnZipDataLen);
GlobalUnlock(hGlobal);
IStream* pStream = NULL;
if
(CreateStreamOnHGlobal(hGlobal, TRUE, & pStream) == S_OK)
{
CImage image;
if
(SUCCEEDED(image.Load(pStream)))
{
IStream* pOutStream = NULL;
if
(CreateStreamOnHGlobal(NULL, TRUE, & pOutStream) == S_OK)
{
image.Save(pOutStream, Gdiplus::ImageFormatJPEG);
HGLOBAL
hOutGlobal= NULL;
GetHGlobalFromStream(pOutStream,&hOutGlobal);
LPBYTE
pBits= (
LPBYTE
)GlobalLock(hOutGlobal);
ulBufferLen =(
DWORD
)GlobalSize(pBits);
*pBuffer =
new
char
[ulBufferLen];
memcpy
(*pBuffer, pBits, ulBufferLen);
GlobalUnlock(hOutGlobal);
pOutStream->Release();
}
}
pStream->Release();
}
GlobalFree(hGlobal);
return
ulBufferLen;
}
VC++使用CImage在内存中Bmp转换Jpeg图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。