首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WIC使用特定编解码器

WIC使用特定编解码器
EN

Stack Overflow用户
提问于 2014-07-27 22:40:06
回答 1查看 508关注 0票数 0

我正在工作的任务,转换原始文件从佳能和尼康与WIC的相机到tiff格式。我找到了使用文件名创建WIC工厂对象的示例。

代码语言:javascript
复制
//Create a WIC Decoder
////////////////////////////////////////////////////////////////////////////
IWICImagingFactory *piFactory = NULL;
IWICBitmapDecoder *piDecoder = NULL;

//Create the COM imaging factory.
HRESULT hr = CoCreateInstance(
CLSID_WICImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IWICImagingFactory,
(LPVOID*)&piFactory);

//Create the decoder.
if (SUCCEEDED(hr))
{
hr = piFactory->CreateDecoderFromFilename(
L"test_raw.cr2",
NULL,
GENERIC_READ,
WICDecodeMetadataCacheOnDemand, //For JPEG lossless decoding/encoding.
&piDecoder);
}

该文件具有佳能的".cr2“扩展名。据我所知,cr2文件至少有2种不同的编解码器。一个来自佳能,一个来自微软。我想确保使用了一个特定的编解码器。我该怎么做呢?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-07-28 00:20:27

为了确保您获得特定的编解码器,您需要自己创建它,如下所示:

代码语言:javascript
复制
IWICBitmapDecoder *decoder;
IWICStream *stream;

factory->CreateStream(&stream);
stream->InitializeFromFilename(L"filename.png", GENERIC_READ);

CoCreateInstance(CLSID_WICPngDecoder, NULL, CLSCTX_INPROC_SERVER, IID_IWICBitmapDecoder, (void**)&decoder);

decoder->Initialize(stream, WICDecodeMetadataCacheOnDemand);

要获取有关已安装的编解码器的信息,请使用IWICImagingFactory::CreateComponentEnumerator.

您还可以在使用IWICBitmapFactory创建编解码器时指定供应商,但这不能保证您会得到您想要的特定供应商。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24982024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档