[ convert ] 画像ファイルの背景色のカラーコードを調べる
[ サイトマップを見る ]
概要:ターミナルから convert を使って,画像ファイルの背景色のカラーコードを調べる方法をわかりやすく説明します。
画像ファイルの背景色を知りたい
画像ファイルのカラーコードを知りたいときがあります。例えば,次のような画像ファイルがあります。この画像ファイルを別の画像ファイルに挿入したい場合を考えてみましょう。
挿入先の画像ファイルの背景色が,下の画像ファイルの背景色と同じでしたら,そのまま挿入するだけでとても便利です。どうしたらいいでしょうか。convertを使って簡単に実現できますので,その方法をわかりやすく説明しましょう。
convert で背景色の情報を知る
以下のようにターミナルでタイプしリターンを押すと,背景色のカラーコードが標準出力されます。
convert image.png -format %c histogram:info:- | sort -rn | head -n 1
図1の画像ファイルの場合,次のように出力されます。
37378: (249,243,227) #F9F3E3 srgb(249,243,227)
今回は convert を使って,1200x900 で背景色が図1の画像ファイルと同じものを作ります。上に出力された,#F9F3E3を利用して次のようにタイプするだけで望むファイルを得ることができます。
convert -size 1200x900 xc:#F9F3E3 test.png
test.png が作れます。表示してみると次のようなファイルであることがわかります。
すごい!図1の背景色を使って画像ファイアルを作成することができました。
何をしているか。
何をしているか説明しましょう。
試みに次のとおりターミナルでタイプしてリターンを押してください。
convert image.png -format %c histogram:info:-
-size の後に 画像の幅 x 画像の高さという形式で幅と高さを指定します。単位はピクセルです。
ずらずらと多くの行が出力されたことでしょう。以下は一部です。
488: (255,255,241) #FFFFF1 srgb(255,255,241)
29: (255,255,242) #FFFFF2 srgb(255,255,242)
494: (255,255,243) #FFFFF3 srgb(255,255,243)
366: (255,255,244) #FFFFF4 srgb(255,255,244)
50: (255,255,245) #FFFFF5 srgb(255,255,245)
430: (255,255,246) #FFFFF6 srgb(255,255,246)
149: (255,255,247) #FFFFF7 srgb(255,255,247)
217: (255,255,248) #FFFFF8 srgb(255,255,248)
57: (255,255,250) #FFFFFA srgb(255,255,250)
3: (255,255,251) #FFFFFB srgb(255,255,251)
2: (255,255,253) #FFFFFD srgb(255,255,253)
画像ファイルでどの色が,何回使われているのかをまとめて出力しています。一番下に「 2: (255,255,253) #FFFFFD srgb(255,255,253)」とありますが,これはカラーコード#FFFFFDは2回使われているということを表しています。
convert image.png -format %c histogram:info:- | sort -rn | head -n 1
そのあと,その結果をパイプで,sort -rn に渡しています。sort は並び替えに使われます。頻出回数について,降順で並べます。一番上に一番使われている色がきます。背景色は画像ファイルのなかで一番面積が大きいとするならば,この一番上にきている色が背景色であることになります。
その結果をまたパイプで今度は head に渡します。head はファイルなどの冒頭何行かだけ出力するときに使われます。今は1行目だけ出力するよう指定されているので,結果,次のような出力がされます。
37378: (249,243,227) #F9F3E3 srgb(249,243,227)
こうして背景のカラーコードの抽出ができました。
図1と図2を合わせてみます。あれ,うまくいかないな。
これは図1の背景にグラデーションがあるためですね。
こういう場合は図1の図の部分と地の部分を分離して,地の部分は背景色にしてしまえばいいですね。ずいぶんながい記事になりましたので,その方法は別の記事でしたいと思います。
関連する書籍
Daniel J. Barrett (著)「Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー」(オライリージャパン)
Mokhtar Ebrahim (著) 「マスタリングLinuxシェルスクリプト 第2版 ―Linuxコマンド、bashスクリプト、シェルプログラミング実践入門」(オライリージャパン)
Michael Hausenblas (著)「入門 モダンLinux ―オンプレミスからクラウドまで、幅広い知識を会得する」(オライリージャパン)
[ サイトマップを見る ]