背景を変えるためのスクリプトを書いていた私のLinuxマシンは、単色だけを含む一連のイメージからランダムなイメージに変換します。私がやりたいことは、テキストの色を変更したり、暗い場所から明るい場所に切り替えるなど、特定のアプリケーション(主にターミナルのもの)をテーマにしてこのスクリプトを展開することです。イメージ内の色の16進コードを取得します。私はこれを行うことができますbashの何かはありますか?より堅牢な言語でプログラムを作成し、16進コードを出力する必要がありますか?これを完全に行うためのよりよい方法はありますか?私のこれまでの検索は、少し決まっていません。
回答:
回答№1は1私は非常に使用することをお勧めします ImageMagick この仕事のために。ザ ドキュメンテーション 画像からデータを抽出する方法について説明します。
「平均色の抽出」から:
画像の平均色は非常にわかります「-scale」を使用して画像を1つのピクセルに縮小することで素早く処理できます。例えば、組み込みの "rose:"画像の平均色です。 FXエスケープフォーマットを使用して色を出力します。 変更せずに直接IMで使用できるカラー文字列を返します。
user@laptop:~$ convert rose: -scale 1x1! -format "%[pixel:s]n" info:-
出力:
srgb(146,89,80)
あなたの場合、 rose:
あなたの画像ファイルで foo.png
.
出力を16進表記で直接入力する場合は、次のようにします。
convert rose: -scale 1x1! -format "%[pixel:s]n" info:- | awk -F "[(,)]" "{printf("#%x%x%xn",$2,$3,$4)}"