Magick++ API 経由で ImageMagick にリンクしています。uint16 データを取得して、1024x768 1 チャネル 16 ビット グレースケール PNG として出力しようとしています。以下から得られる出力は RGB8 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
コマンドラインでは、目的の出力が得られます