ImageMagick で処理している画像がいくつかあります。この場合、RGBA PNG をインデックス付き PNG に変換しています。このツールを使用するconvert
と、インデックス付き PNG の色数を適切に制御できます。
$ convert infile.png -colors 128 outfile.png
$ identify outfile.png
outfile.png PNG 77x77 77x77+0+0 8-bit PseudoClass 91c 3.03KiB 0.000u 0:00.000
色数を大幅に減らすようです (91 < 128) MagickWand で同じ変換を試みていますMagickQuantizeImage(wand, 128, RGBColorspace, tree_depth=1, 0, 0)
。関数のシグネチャは
MagickBooleanType MagickQuantizeImage(
MagickWand *wand,
const size_t number_colors,
ColorspaceType colorspace,
const size_t treedepth,
const MagickBooleanType dither,
const MagickBooleanType measure_error)
最終的な結果は、色が少なすぎる (11 色のみ!) 画像になります。
$ identify wandoutfile.png
wandoutfile.png PNG 77x77 77x77+0+0 8-bit PseudoClass 11c 1.31KiB 0.000u 0:00.000
MagickWand を使用して色を減らす方法を知っている人はいますか (その過程で画像を破壊することなく)。
ありがとう!