Developer's Blog

ImageMagick をコマンドラインで利用する

こんにちは。エンジニアの上田です。

画像の加工をコマンドラインから実行することができる ImageMagick のコマンドラインの実行例を紹介したいと思います。

ImageMagick 自体の説明は、公式サイトもしくは ImageMagick – Wikipedia をご参考ください。

画像を作成する

まずは、サイズと色を指定しての画像を作成してみます。

convert -size 100x100 xc:blue im_xc.png
# RGB で指定したい場合は『xc:"rgb(0,0,255)"』となります
実行結果-1 : im_xc.png


テキストが入った画像にしたい時は、テキスト、位置、大きさ、など指定します。

convert -size 100x100 \
  -background "rgb(100,100,255)" \
  -gravity Center -pointsize 24 \
  label:Sample im_label.png
# 日本語の指定で文字化けが発生する場合は、Windows では
# 『-font C:\Windows\Fonts\msgothic.ttc』などフォントの
# 指定を行ないます
実行結果-2 : im_label.png

画像を加工する

次は、画像に対して線などの図形を追加してみたいと思います。
画像(実行結果-2)に矩形と線を追加する場合は次のようになります。

convert im_label.png
  -stroke "rgb(255,0,0)" -fill none \
  -draw "rectangle 10,10 90,90" \
  -draw "line 10,10 90,90" im_draw.png
実行結果-3 : im_draw.png

 

さらに、画像(実行結果-3)に上下左右 5px のボーダーを追加してみます。

convert im_draw.png \
  -bordercolor black \
  -border 5x5 im_border.png
# 元画像の 100x100 に上下左右 5px 追加され
# 出力画像は 110x110 になります
実行結果-4 : im_border.png

 

最後に、画像(実行結果-4)の左 5px を削る。

convert im_border.png -crop 105x110+5+0 im_crop.png
# 元画像 110x110 に対して、左 5px 削るため
# サイズは 105x110, 描画開始位置は (5, 0)
実行結果-5 : im_crop.png

画像を切り出し

次は、画像を丸く切り出したいと思います。
まず、画像を切り抜く対象とするマスク(透明背景に黒い丸)を用意します。

convert -size 100x100 xc:none \
  -fill black -stroke black \
  -draw "circle 50,50 25,25" im_mask.png
実行結果-6 : im_mask.png

 

切り抜きたい画像(実行結果-3)にマスク画像(実行結果-6)のアルファ値を加えます。

convert im_draw.png im_mask.png \
  -compose CopyOpacity \
  -composite im_output1.png
実行結果-6 : im_output1.png

 

さらに、透明になったの部分に色を付けたい場合は、アルファ値を削除し、背景色を指定します。

convert im_output1.png \
  -background green \
  -alpha remove im_output2.png
実行結果-7 : im_output2.png

画像を変形

最後は、画像を 3D 風に変形させてみます。
その場合は、左上、左下、右上、右下のそれぞれを、どのように変形させたかを指定します。
※変形したときに出来た余白は、透明になる指定も行なっています。

convert im_border.png -virtual-pixel transparent \
  -distort Perspective \
  "0,0 20,20 0,100 20,80 100,0 80,40 100,100 80,60" im_distort.png
# 左上(0,0)⇒(20,20), 左下(0,100)⇒(20,80), 
# 右上(100,0)⇒(80,40), 右下(100,100)⇒(80,60) と指定しています
実行結果-8 : im_distort.png

纏めて実行

これまで紹介した内容は、1つ1つ実行していましたが、纏めて実行することもできます。
やり方としては、次のように命令を繋げます。

convert -size 100x100 -background "rgb(100,100,255)" 
  -gravity Center -pointsize 24 label:Sample \
  -stroke "rgb(255,0,0)" -fill none \
  -draw "rectangle 10,10 90,90" -draw "line 10,10 90,90" \
  ( -size 100x100 xc:none -fill black -stroke black \
  -draw "circle 50,50 25,25" ) \
  -compose CopyOpacity -composite im_output3.png
実行結果-9 : im_output3.png

最後に

ImageMagick は、プログラムから機械的な画像加工するのに便利だと思います。

今回紹介した内容は、単純な例だったのでより多く詳しい内容は、公式サイトImageMagick v6 Examples をご参考ください。

ソーシャルアカウント

フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!

Copyright © 2019 Fenrir Inc. All rights reserved.