我通過Magick ++ API鏈接到ImageMagick。我試圖將uint16數據輸出爲1024x768 1通道16位灰度PNG。我從下面得到的輸出是RGB8 PNG。除格式化之外,圖像內容是正確的。ImageMagick C++ API輸出16位灰度png?
gray16_view_t u16view = ...;
uint16_t* data = interleaved_view_get_raw_data(u16view);
size_t length = sizeof(u16) * u16view.width() * u16view.height();
Magick::Blob u16Blob(data, length);
Magick::Geometry size(u16view.width(), u16view.height());
Magick::Image u16MagickImg(u16Blob, size, 16, "GRAY");
u16MagickImg.write("test-16bit.png");
有沒有什麼方法可以指定更多關於輸出格式?
的ImageMagick的PNG處理一些討論是在這裏:http://www.imagemagick.org/Usage/formats/#png_formats 他們列出PNG8,PNG24和PNG32爲可用的格式,但下面的部分意味着
-define png:bit-depth 16
-define png:color-type=0
在命令行上會具有所需的輸出