2017-12-26 66 views
0

私はLinuxマシン上の自分の背景を、単色だけの画像セットからランダムなイメージに変更するためのスクリプトを書いていました。私がやりたいことは、テキストの色を変更したり、暗い場所から明るい場所に切り替えるなど、特定のアプリケーション(主にターミナルのもの)をテーマにしてこのスクリプトを展開することです。イメージ内の色の16進コードを取得します。私はこれを行うことができますbashの何かはありますか?より堅牢な言語でプログラムを作成し、16進コードを出力する必要がありますか?これを完全に行うためのよりよい方法はありますか?私のこれまでの検索は、少し決まっていません。スクリプトのための単色イメージから16進数カラーコードを取得するには?

+0

を私が正しくあなたを理解していればそれで、あなたは、入力および出力として(、yは座標対し、x)の写真を撮りたいです16進値としての色? –

+0

はい、そのようなものですが、より効果的なカラーコードを取得する方法があれば。私が言ったように、この場合、彼らは単色のイメージです。私の検索では、スクリプトやプログラミング言語で簡単に使うことはできませんでした。私が望むことをする既存のツールは見つけられませんでした。 –

答えて

1

このタスクにはImageMagickを使用することを強くお勧めします。 documentationには、画像からデータを抽出する方法が記載されています。 「平均的な色を抽出」から

画像の平均色は、単一のピクセルに画像を縮小する「-scale」を使用して非常に迅速に求めることができます。例えば、組み込みの "rose:"画像の平均色です。 はそのままIMでそのまま使用できるカラーストリングを返すFXエスケープフォーマットを使用してカラーを出力します。

[email protected]:~$ convert rose: -scale 1x1\! -format '%[pixel:s]\n' info:- 

ウィル出力:あなたのケースではsrgb(146,89,80)

foo.pngのように、あなたの画像ファイルにrose:を交換してください。あなたは16進表記で直接出力したい場合は

、これを使用する:

convert rose: -scale 1x1\! -format '%[pixel:s]\n' info:- | awk -F '[(,)]' '{printf("#%x%x%x\n",$2,$3,$4)}' 
+0

ありがとうございました!あなたはそれを16進数値にまっすぐに出力する方法を知っていますか?私はそこにいると確信していますが、あなたがそれを知っていれば、ドキュメントを探しているよりも速くなるかもしれません。もしそうでなければ、私はおそらくそれを変換する方法を見つけ出すことができます。 –

+0

申し訳ありませんが、ImageMagickは作業する絶対的な雌犬です。それは強力ですが、ドキュメントはありません。同じ言葉がいくつかの異なる文脈で使用されているという事実は、Googleにとって非常に難しいものです。 –

+0

@ChristopherLeggett私は新しい質問[ここ](https://stackoverflow.com/questions/47983587/how-can-imagemagick-output-hex-colours-instead-of-srgb)も尋ねました。一緒に解決策。 –