如何在内存中实现bmp与jpg的相互转换(不使用文件)

seadn 2009-04-17 05:17:23
就是在内存中完成BITMAP和JPG(使用char*)的相互转换,不能使用文件系统(出于效率问题)

尝试用使用CMemFile、jpeglib和GDI+,都没有成功,不知道有没有相应的代码已经实现了类似功能

seadnzhang@gmail.com

Tks
...全文
217 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinfuyong 2009-05-01
  • 打赏
  • 举报
回复
学习
cau228charm 2009-04-30
  • 打赏
  • 举报
回复
用gdal啊
stjay 2009-04-18
  • 打赏
  • 举报
回复
大致这样,pData为缓冲区
HGLOBAL hBuffer=GlobalAlloc(GMEM_MOVEABLE,imageSize);
void* pBuffer=GlobalLock(hBuffer);
CopyMemory(pBuffer, pData, imageSize);
IStream* pStream=NULL;
CreateStreamOnHGlobal(hBuffer,FALSE,&pStream);
Bitmap bm(pStream);
CLSID pngClsid;
GetEncoderClsid(L"image/jpeg", &pngClsid);
//bm.Save(L"xx.jpg", &pngClsid, NULL);

HGLOBAL hBuffer2=GlobalAlloc(GMEM_MOVEABLE,imageSize2);
IStream* pStream2=NULL;
CreateStreamOnHGlobal(hBuffer,FALSE,&pStream2);
bm.Save(pStream2, &pngClsid, NULL);
void* pBuffer2=GlobalLock(hBuffer2);
CopyMemory(pData, pBuffer2, imageSize2);

GlobalUnlock(hBuffer);
GlobalFree(hBuffer);
GlobalUnlock(hBuffer2);
GlobalFree(hBuffer2);
小赌移情 2009-04-18
  • 打赏
  • 举报
回复
GDI+可以 就幾句代碼 查看我在下載區上傳的一個資源 就是用來解決你問題的
libjpeg也可以 就是太麻煩了

就是這個
百事烟 2009-04-18
  • 打赏
  • 举报
回复
GDI+绝对可以的,代码很少,少的可怜..,本人刚做完

LZ坚定方向,一定能成,


「已注销」 2009-04-17
  • 打赏
  • 举报
回复
用libjpeg,有SourceCode,很容易搞定
ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧