コマンドラインから画像の主要な色を取得することは可能ですか?理想的には、16進数またはRGBとして戻したいです。
imagemagickのidentifyコマンド でこれを行うことができるかもしれないと思いましたが、ドキュメントでこれを行うためのオプションを見つけることができませんでした。
Imagemagickのidentify -verbose
は、パレットヒストグラムテーブルbutを提供しますが、一意の色の数が制限(私がチェックしたバージョンでは1024、v6)を下回っている場合に限ります。 x v6.8.3まで)。
代わりに、 ヒストグラムへの画像 を「convert
」することができます。この出力は、一意の色の数によって制限されません。
convert image.jpg -format %c -depth 8 histogram:info:histogram_image.txt
sort -n histogram_image.txt | tail -1
出力を最初の列で数値的に並べ替えると、ピクセルの色の頻度で並べ替えられます。 (もちろん、特定の色のピクセルの頻度は、支配的な色の人間の知覚に対応しない場合があります。)
色を減らす場合は、convert
を do it for yo に信頼することができます。これは、 dithering および/または posterizing 。特にウェブセーフ216にさえ:
convert image.png +dither -remap netscape: image_websafe.png
ぼかし、サイズ変更、ポスター化を組み合わせることで、知覚される優勢な色に近づく可能性があります。これは、定義して解決する簡単な問題ではありません。
Imagemagickを使用して画像内の主要な色のセットを決定するスクリプトであるdcolors
については、次のリンクも参照してください。選択したデスクトップイメージを使用したデスクトップの配色: http://javier.io/blog/en/2015/09/30/using-imagemagick-and-kmeans-to-find-dominant-colors-in- images.html
私はここでこのエレガントで短い答えを見つけました http://blog.endpoint.com/2011/04/determining-dominant-image-color.html
$ convert Waffle.jpg -scale 1x1\! -format '%[pixel:u]' info:-
rgb(219,166,94)