2015/12/24

画像の特定の色をコマンドラインで変換する

画像の特定の色を一気に変換したくなる時はそれなりにあると思います.かと言って,Illustratorとかで手で修正してると大量もしくは繰り返し処理出来ないのでコマンドラインで変換したいと思います.やり方は,

 % convert -fill 新しい色 -opaque 古い色 orig.png new.png

という感じです.ここで,色を RGB でガッツリ指定するわけですが,そもそもその色が何色なのか分からない場合は,Macの場合ユーティリティーの中にある Digitalcolor meter が使えます.
Digitalcolor meter

Launchpad からも見つけられると思います.起動すると,マウスを持って行ったところの色を RGB で表示してくれます.そこから 16進数 になおして以下のように指定します.

 % convert -fuzz 3% -fill '#ffffff' -opaque '#eeea39' orig.png new.png

ここで, -fuzz x% がないとドンピシャの色じゃないと convert が変換してくれないので少し幅を持たせています.正直,Digitalcolor meter も複数のRGBを表示するし,何故幅が必要なのか分かりませんが,,,トライアンドエラーで自分の今回の作業としては3%で良さそうでした.

参考:
ImageMagickのconvertコマンドで特定の色を置換する
ImageMagickはMacPortsで入れてます