概ね自分に必要なことはImageMagickでできそうなのだが、ChainLPについている「本文ボールド化」というのに相当するのが見当たらない。ImageMagickなら適当に操作すればできるだろうということでやってみた。
結論のコマンドは、以下のとおり。
どうしてこうなったのかがわからないと思うので、詳しいことは以下に書く。
方針
本文ボールド化の設定画面を見ると、XとかYがあって、それぞれ値を増やすと画像の黒い部分がそれぞれの方向に伸びる。 ということは、黒い部分を検出して、XとYに伸ばしているに違いないと読んだ。
これは、以下の方法でできそうなので、それをコマンドでやることにする。
- 画像をコピーする
- 黒検出する
- 1pixel移動する
- 元の画像に重ねる
上述の方法を、ImageMagickのコマンドで実現するとこうなる。
convert input.jpg # input.jpgをロード '(' # スタックの次の画像として処理開始 +clone # 最後の画像をコピー -threshold 50% # 50%を境に、白黒にする -alpha Copy # 白黒の値(Value大=白なので、白っぽさ)をアルファチャンネルにコピーする -channel alpha -negate # アルファチャンネルの値を、逆転させる(黒っぽさにする) -geometry +0+1 # 縦に1pixelずらす '(' # スタックの次の画像として処理開始 +clone # 前の画像をコピーして -geometry +1-1 # 縦の1pixelを戻し、横に1pixelずらす ')' # スタックの現在の画像の処理完了 +composite # ひとつ前の画像を、その前の画像に結合 ')' # スタックの現在の画像の処理完了 +composite # ひとつ前の画像を、その前に画像に結合 output.jpg # output.jpgに出力
-threshold 50%は、結構悩んだ。最適解には思えないので、-levelとか、-black-thresholdとかをうまくあてこむともっとよくなると思う。
参考
さらっと書いているが、ここまでたどりつくのにだいぶ苦労した。いろいろなところを読んだのだが、一番近くなったのはここ。
ImageMagick 透過PNGを非透過な画像に変換する
まぁ、なんといっても公式が大事。-fxまで使えれば、特殊なアルゴリズムを必要としない、バッチ的な画像加工は概ねできるんじゃないかと思っているが、まだ使いこなせていない。
ImageMagick: Command-line Options
0 件のコメント:
コメントを投稿