首页 > 编程语言 > 详细

VC++使用CImage在内存中Bmp转换Jpeg图片

时间:2017-05-25 12:46:56      阅读:290      评论:0      收藏:0      [点我收藏+]
unsigned long BMP2JPEG(char* pUnZipData,unsigned long ulUnZipDataLen,char** pBuffer)
{
    unsigned long ulBufferLen = 0;
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, ulUnZipDataLen); 
    void* pData = 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图片

原文:http://www.cnblogs.com/yangmingyu/p/6903074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!