ImageMagickの話ね。
fillオプションとopaqueオプションを使う。
[bash]
$ convert -fill ‘after’ -opaque ‘before’ /path/to/input /path/to/output
[/bash]
色の指定にはredとかblackとかの表記も使える(-fill redみたいな)し、’rgb(R,G,B)’みたいにしても良い(-fill ‘rgb(255,0,0)’)。勿論-fill ‘#RRGGBB’も可。
このやり方だと指定した色と同値の色しか置換されないため、特にjpeg画像なんかは目も当てられない状態になる。その時のための-fuzzオプション。
-fuzz distance{%}みたいにつけてやると、distance分だけ離れていても同じ色として考える。何に対する割合かというと、多分RGBの最大値に対してってこと。
今回使ったのは、スキャンした画像から赤いはんこ部分を取り除く目的。
はんこ部分の中心付近が一番劣化で色がブレてなさそうという事で、色をKolourPaintで調べてdc3c3cくらいという事がわかった。ちなみにKolourPaintというのは、Linuxの上でmspaintみたいな操作感を実現しようというソフト。GIMPがデフォで入ってたりするけど、そんなに高度な事をやる必要が無くて、軽量動作が嬉しいみたいな場合に便利。
fuzzオプションのお陰で多くを置換出来るけど、はんこ部分の外側には赤が滲み出ているような状態で、fuzzの引数を調整する事でこれを取り除こうとすると、今度は文書本体が引っかかるようになってしまい、ダメだなぁという状態に。
小規模な赤という事で、白黒化しちゃえば消えるし、そこで調整すればうまく調整できるという訳で、白黒化も含めて一発でやっちゃう。今回使ったのはこちら。
[bash]
$ convert -fuzz 25% -fill ‘#ffffff’ -opaque ‘#dc3c3c’ -threshold 55% input.jpg output.jpg
[/bash]
便利だ。