我有一个字节流pBitmap
,我需要从中创建一个解码器。所以我尝试如下
IWICStream *piStream = NULL;
IWICBitmapDecoder *piDecoder = NULL;
//piFactory is my IWICImagingFactory
hr = piFactory->CreateStream(&piStream);
//lRawSize is bufferSize
//pBitmap is my byte buffer
hr = piStream ->InitializeFromMemory(pBitmap, lRawSize);
hr = piFactory->CreateDecoder(GUID_ContainerFormatJpeg,NULL,&piDecoder);
//HERE i got the error.
hr = piDecoder->Initialize(piStream, WICDecodeMetadataCacheOnDemand);
hr 返回未找到的组件。这里可能是什么问题。
更新:
我不确定我打算解码的位图源是否是 jpg。所以我可以理解将容器格式传递为“GUID_ContainerFormatJpeg”是不正确的。所以我尝试了IWICImagingFactory::CreateDecoderFromStream
hr = piFactory->CreateDecoderFromStream(
piStream,
NULL,
WICDecodeMetadataCacheOnDemand,
&piDecoder
);
但结果是一样的。我从一个文件启动流。这很好用。
hr = piStream ->InitializeFromFilename(L"C..\\test.jpg",GENERIC_READ);
所以问题应该出在启动流中。
我创建了一个编码器并做了一些事情并将它们保存到一个文件中writepixel
(不创建解码器)
hr = piBitmapFrame->WritePixels(
lHeight,
cbStride,
cbBufferSize,
pBitmap);
它可以保存精美的图像。所以我可以说 pBitmap 肯定包含图像数据。
这里可能是什么问题。