码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-05-25 13:30:02      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:使用   cimage   move   转换   code   stream   image   cee   ima   

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图片

标签:使用   cimage   move   转换   code   stream   image   cee   ima   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!