ImageMagick/Graphicsmagick -colors オプションを理解するのに助けが必要です
-
26-09-2019 - |
質問
PNG および GIF ファイルのファイル サイズをプログラムで削減 (損失) しようとしています。その一環として、画像の色数を減らす必要があります。すべての画像を単一の色の値に減色したくないので、私がやっていることは次のとおりです。画像内の固有の色の数を取得します。この数を 2 で割ると、色の数が半分になります。
問題は、これが機能しないことです。ImageMagic を使用すると速度が非常に遅くなり、画像に数百色未満の固有の色が含まれていない限り、ファイル サイズは減少しません。GraphicsMagick を使用すると、元の画像に含まれる色の数に関係なく、常に固有の色の値が 255 未満になります。GraphicsMagick のもう 1 つの問題は、画像内に透明なピクセルがある場合、失われた色が透明に置き換えられてしまうことです。
どんな助けも感謝します、ありがとう。
解決 3
最初の問題、GraphicsMagickの8ビット、16ビットまたは32ビット量子レベルを使用してコンパイルすることができます。私のバージョンは8ビット(デフォルト)にコンパイルされ、人間の目ができるので、この手段は、画像に割り当てることができる色の最大数は、256個のユニークな色(* 3,3 * 2、青ビットの1であることが除去されます「t)が適切にそれを参照してください。もちろん、GraphicsMagickのは、これ以上の色で画像を処理することができますが、色を減らすときにのみ、256色以下に減らすことができます。大きなピクセルクォンタムはGraphicsMagickのはもっとゆっくり実行し、より多くのメモリを必要とする原因となります。例えば、16ビットの画素クォンタムを使用することが8ビットピクセルクォンタムをサポートするように構築されているときよりも(多くのメモリとして二倍と取る)より遅い15%、50%を実行するGraphicsMagickの原因となる。
第二の問題。 PNG画像に取り扱い、透明性、私はGraphicsMagickの以前のバージョンを使用して(1.1私は思う)私は1.3にアップグレードしたときに、とにかく、この問題は、それがこれを引き起こしたことGraphicsMagickの1.1のバグだったと私に語っもはや存在しませんでした。
他のヒント
色数を減らすことは、次の場合にのみ役立ちます。
- 画像は各ピクセルの色を保存する代わりにパレットを使用できます。
- パレット インデックスのサイズが色のサイズより小さい
- 画像フォーマットはパレットサイズをサポートしています
1 ビット、4 ビット、8 ビットしか取得できないと思います。つまり、これらの形式では 2 色、16 色、または 256 色になります。これ以上要求しても、256 に切り捨てられるだけだと思います。少なくするように要求すると、パレット全体が使用されなくなります。
JPEG に変換して品質設定を変更することを検討しましたか?最終的には、非可逆性をより細かく制御できるようになります。欠点は画像が写真でない場合ですが、色が多そうなのでそうかもしれません。
希望に近い場合は 1、4、8 ビットを選択し、色数が多い場合は jpeg を選択するとよいでしょう。
私はあなたが後にしているImageMagickの施設は、量子化かもしれないと思います