|

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ImageMagick: 画像に縁取り付き文字列を書き込む

元画像:
input

書き込んだ結果:
output

明るい画像でも暗い画像でも対応できるように白文字に黒縁取りで書き込みたい。

シェルスクリプトでも良かったかなと思いましたがなんとなく Ruby で。


# -*- coding: utf-8 -*-

def _exec cmd
  puts cmd
  system cmd
end

font_path = "./ume-tgo5.ttf" # 梅ゴシック O5
point_size = 32
text = ["日本語文字列", "123", "abcABC"].join("\n")
input_img = ARGV[0]

_exec <<EOB
convert \
  -font "#{font_path}" -pointsize #{point_size} \
  -gravity center \
  -annotate +0-1 "#{text}" \
  -fill "#0000" -stroke "#000a" -strokewidth 8 \
  "#{input_img}" __temp.png
EOB

_exec <<EOB
convert \
  -font "#{font_path}" -pointsize #{point_size} \
  -gravity center \
  -annotate 0 "#{text}" \
  -fill "#fff" \
  __temp.png output.jpg
EOB

使用画像はこちら: File:MountStQuentinByArthurStreeton.jpg - Wikipedia, the free encyclopedia

スポンサーサイト

スキャンした書籍や書類の余白をImageMagickで除去する

-trim, -fuzz

そういう都合のいいオプションはないものかと調べてみると、 -trim というのが見つかりました。

convert -trim a.png a-out.png
a.png

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-a.png

a-out.png

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-a-out.png


ただし、 -trim オプションは「角のピクセルと同じ色」を除去するようで、 紙の色ムラ・染みなどノイズが混じっていると上手く除去できません。

convert -trim b.png b-out.png
b.png

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-b.png

b-out.png

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-b-out.png

convert -trim c.png c-out.png
c.png
https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-c.png
c-out.png
https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-c-out.png

そこらへんも適当にうまいことやってくれよーと思うわけですが、 なんと大変都合の良いことに -fuzz というオプションがあるんですね。

-trim に添えて -fuzz 50% などと指定してやります。

convert -fuzz 50% -trim b.png b-out2.png
b.png

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-b.png

b-out2.png

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-b-out2.png

すばらしい。


↓ パラメータをいじるとこんな感じで除去の度合いが変化します。

除去しない 0% ←→ 100% 強く除去する

スキャンした紙を加工する

以下、紙からスキャンした場合を想定した例です。

スキャンした画像 original.jpg

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-original.jpg


上記と同じように fuzz + trim

convert -fuzz 50% -trim original.jpg out-1.jpg
out-1.jpg

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-1.jpg


パーセント指定を大きくしすぎると 除去しなくていい部分(文字の一部)まで削れてしまいます。

convert -fuzz 70% -trim original.jpg out-2.jpg
out-2.jpg

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-2.jpg


せっかくなのでレベル補正しましょうか。

convert -level 0%,75%,0.8 -fuzz 50% -trim original.jpg out-3.jpg
out-3.jpg

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-3.jpg


さらに固定幅の余白を付けたい場合は -border を使います。

convert -level 0%,75%,0.8 -fuzz 50% -trim \
  -bordercolor '#ffffff' -border 10%x10% \
  original.jpg out-4.jpg
out-4.jpg

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-4.jpg


固定幅の余白を付けるのではなく できあがりの画像サイズを指定して中央に配置したい場合、 -border を使う代わりに次の2つの処理を組み合わせます。

(1) 白で塗りつぶした200x100ピクセルの画像を作成:

convert -size 200x100 xc:white out.jpg

(2) 下敷きとなる画像(sita.jpg) の上にそれより小さな画像(ue.jpg)を重ねる。 配置は上下左右の中央:

convert sita.jpg ue.jpg -gravity center -composite out.jpg

全部一緒に組み合わせるとこうなります。

convert \
  \( -size 320x400 xc:white \) \
  \( -level 0%,75%,0.8 -fuzz 50% -trim original.jpg \) \
  -gravity center -composite out-5.jpg
original.jpg

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-original.jpg

out-5.jpg

https://blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-5.jpg

分かりにくい場合は無理に繋げなくても中間ファイルを作って段階ごとに処理すれば良いかと思います。

参考

ImageMagick逆引きコマンドリファレンス
ImageMagick逆引きコマンドリファレンスクーガー株式会社 石井 敦

インプレスジャパン 2008-11-28
売り上げランキング : 426384


Amazonで詳しく見る
by G-Tools
「自炊」のすすめ 電子書籍「自炊」完全マニュアル
「自炊」のすすめ 電子書籍「自炊」完全マニュアル
インプレスジャパン 2011-07-22
売り上げランキング : 21130


Amazonで詳しく見る
by G-Tools
電子ブック自炊完全マニュアル
電子ブック自炊完全マニュアル戸田 覚

東洋経済新報社 2010-12-03
売り上げランキング : 67122


Amazonで詳しく見る
by G-Tools

ImageMagick - 外部リンク

ImageMagick v6 Examples
http://www.imagemagick.org/Usage/
ImageMagick: Command-line Options
http://www.imagemagick.org/script/command-line-options.php

画像処理についてあれこれ
http://kyle-in-jp.blogspot.com/

ImageMagickのmontageコマンド - Yaibeen
http://nucleus.yaibeen.com/item21.html
montageで隙間の無い正方形サムネイル - Yaibeen
http://nucleus.yaibeen.com/item22.html
montageの余白とボーダーの考え方 - Yaibeen
http://nucleus.yaibeen.com/item99.html



** ホームに戻る

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。