|
不知道这里有没有大神,蛮问一下。。非常感谢!
遇到一种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 未定义标识符
|