VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1249|回复: 1

使用OleLoadPicture加载图片对象IPicture返回NULL或阻塞

[复制链接]
53_avatar_middle
最佳答案
0 
在线会员 发表于 2023-6-12 17:21:33 | 显示全部楼层 |阅读模式
不知道这里有没有大神,蛮问一下。。非常感谢!

遇到一种jpg格式的图片,它的内容可能有点问题,比如是FFD8开头,但不是FFD9结尾,中间的数据也不保证正确。这种图片Windows能识别,用画图工具打开,在另存为jpg文件,内容就正常了。

现在的问题是,以下代码遇到这种问题图片,OleLoadPicture会返回pPicture=NULL,甚至阻塞在OleLoadPicture中。
是否有OleLoadPicture的平替,可以正确处理这种有问题的照片数据;或者怎么在代码里修复有问题的照片数据,在用OleLoadPicture生成IPicture对象呢?

以下是源码》》》

IPicture *pPicture;
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, 图片长度);
void* pData = GlobalLock(hGlobal);
memcpy(pData, 图片二进制数据, 图片长度);
GlobalUnlock(hGlobal);
IStream* pIStream = NULL;
if (CreateStreamOnHGlobal(hGlobal, TRUE, &pIStream) == S_OK)
{
        HRESULT h = OleLoadPicture(pIStream, 0, false, IID_IPicture, (LPVOID*)&(pPicture));
        ......
}
                                       




上一篇:用new出来的char*数组打印错误
下一篇:vs2022 未定义标识符
02_avatar_middle
最佳答案
0 
在线会员 发表于 2023-6-24 08:35:46 | 显示全部楼层
你应该有一个缓冲区,把数据保存在缓冲区中,然后sizeof()数据的长度
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2024-4-15 20:01

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表