我有一个库,可以在内存缓冲区中生成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
?
答案 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");