使用Graphicsmagick以DPX格式加载原始内存blob

时间:2013-02-11 22:17:09

标签: graphicsmagick

我有一个库,可以在内存缓冲区中生成Big Endian 10位DPX映像。它只是原始的10位RGB数据,没有标题。我正在尝试将此数据加载到Magick::Image的实例中,如下所示:

Magick::Blob blob(dataBuffer, dataBufferSize;
image.read(blob, Magick::Geometry(width, height), 10 /*bits*/, "DPX");

但是抛出以下异常:Magick: Improper image header ()

是否可以将原始DPX加载到Magick::Image

2 个答案:

答案 0 :(得分:1)

我认为你的答案不是很好。它是偶然的工作。您的blob数据可能采用其他格式而不是DPX。指定“SDPX”(不支持的格式规范)允许文件格式检测自动工作并选择正确的格式。

使用

enter code herMagick::Blob blob(dataBuffer, dataBufferSize);
image.read(blob);
那么

应该足够了。大多数图像文件格式不需要指定格式或深度。

答案 1 :(得分:0)

在这里找出我自己的答案。我看了一下DPX加载源,发现了这个案例:

image.read(blob, Magick::Geometry(width, height), 10 /*bits*/, "DPX");

应该是:

image.read(blob, Magick::Geometry(width, height), 10 /*bits*/, "SDPX");