1

我有一个在内存缓冲区中生成 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.

4

2 回答 2

1

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

使用

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

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

于 2013-02-17T16:24:40.227 回答
0

在这里想出了我自己的答案。我查看了 DPX 加载源,并在这种情况下发现了这一行:

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

应该:

image.read(blob, Magick::Geometry(width, height), 10 /*bits*/, "SDPX");
于 2013-02-12T22:01:23.340 回答