こんにちは。エンジニアの上田です。
画像の加工をコマンドラインから実行することができる ImageMagick のコマンドラインの実行例を紹介したいと思います。
ImageMagick 自体の説明は、公式サイトもしくは ImageMagick – Wikipedia をご参考ください。
画像を作成する
まずは、サイズと色を指定しての画像を作成してみます。
convert -size 100x100 xc:blue im_xc.png # RGB で指定したい場合は『xc:"rgb(0,0,255)"』となります
テキストが入った画像にしたい時は、テキスト、位置、大きさ、など指定します。
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)に矩形と線を追加する場合は次のようになります。
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)に上下左右 5px のボーダーを追加してみます。
convert im_draw.png \ -bordercolor black \ -border 5x5 im_border.png # 元画像の 100x100 に上下左右 5px 追加され # 出力画像は 110x110 になります
最後に、画像(実行結果-4)の左 5px を削る。
convert im_border.png -crop 105x110+5+0 im_crop.png # 元画像 110x110 に対して、左 5px 削るため # サイズは 105x110, 描画開始位置は (5, 0)
画像を切り出し
次は、画像を丸く切り出したいと思います。
まず、画像を切り抜く対象とするマスク(透明背景に黒い丸)を用意します。
convert -size 100x100 xc:none \ -fill black -stroke black \ -draw "circle 50,50 25,25" im_mask.png
切り抜きたい画像(実行結果-3)にマスク画像(実行結果-6)のアルファ値を加えます。
convert im_draw.png im_mask.png \ -compose CopyOpacity \ -composite im_output1.png
さらに、透明になったの部分に色を付けたい場合は、アルファ値を削除し、背景色を指定します。
convert im_output1.png \ -background green \ -alpha remove 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) と指定しています
纏めて実行
これまで紹介した内容は、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
最後に
ImageMagick は、プログラムから機械的な画像加工するのに便利だと思います。
今回紹介した内容は、単純な例だったのでより多く詳しい内容は、公式サイトの ImageMagick v6 Examples をご参考ください。
ソーシャルアカウント
フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!