はじめに
こんにちは、鈴木商店の吉田です。
最近業務で ImageMagick を使う機会があり、せっかくなら楽しいことできないかなあと思い、
YouTube のサムネのような画像を作ってみることにしました。
ImageMagick とは
ImageMagick(イメージマジック) は画像処理ライブラリです。
コマンドラインで簡単に画像処理ができます。
環境
・ macOS Monetrrey 12.5.1
・ ImageMagick 7.1.0-33
基本構文
ImageMagick には、いくつか基本構文がありますが、今回はすべて convert
コマンドを使います。
以下3パターンです。
1 2 3 4 5 6 7 8 9 |
## 1. 変換元の画像がある場合 convert 変換元の画像名 [オプション] 変換後の画像名 ## 2. コマンドで新しい画像を作る場合 convert [オプション] 変換後の画像名 ## 3. 2つの画像を重ねる場合 convert 重ねる際下に置く画像名 上に重ねる画像名 [オプション] -compose over -composite 変換後の画像名 |
画像を編集してみる
では、実際にやっていきましょう〜。
今回は、先日友人が撮ってくれた写真で作っていきます。
STEP1: 画像をリサイズする
1 2 |
convert origin_photo.JPG -crop 1280x720+100+480 resize.png |
オプション | 内容 | 詳細 |
---|---|---|
-crop | 切り取るサイズ/場所を指定する | (width) x (height) +(x座標) +(y座標) |
画像の切り取ったのと同時に、さらっとファイル形式を JPEG から PNG に変更しています。
ファイル名を指定する際拡張子を変更すれば、 ImageMagick がファイル形式を変えてくれます。
めっちゃかんたん。ありがたい!
STEP2: 色加工する
1 2 |
convert resize.png +contrast +contrast -modulate 120,120 contrast.png |
オプション | 内容 | 詳細 |
---|---|---|
+contrast | コントラストを設定する | 通常のオプションは、数字で指定できるが、contrast は 高くする場合は +contrast (更に高くする場合は、 +contrast を複数回記載する)。 低くする場合は -contrast |
-modulate | 明るさ、彩度を設定する | 明るさ(%) x 彩度(%) |
少しわかりにくいですが、明るくなりました。
髪にツヤがでたのが嬉しい^^
STEP2.5: STEP1 と STEP2を組み合わせる
わかりやすいように分けましたが、STEP1、STEP2 は1回のコマンドで実行することができます。
その場合は、こんなコマンドになります。
1 2 |
convert origin_photo.JPG -crop 1280x720+100+480 +contrast +contrast -modulate 120,120 contrast.png |
STEP3: 文字画像を作成する
次は、文字画像を2つ作っていきます。
変換元の画像がないため、 convert
の後にいきなりオプションがきます。
1 2 3 4 5 6 |
## 文字画像1 convert -background "rgba(0,0,0,0.6)" -size 550x200 -gravity center -font '/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc' -fill white -pointsize 40 label:'1泊2日\n旅行の持ち物リスト' main_text.png ## 文字画像2 convert -background "rgba(255,255,255,0.9)" -size 250x80 -gravity center -font '/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc' -fill gray -pointsize 25 label:'ゆるミニマリスト' sub_text.png |
オプション | 内容 | 詳細 |
---|---|---|
-background | 背景色を指定 | 背景色は テキスト(white 等)や rgba で指定できます。今回は背景を透過にしたかったので、rgba の第四引数で透明度を指定しています。 |
-size | 画像のサイズ | (width) x (height) |
-gravity | 文字の場所 | center(真ん中) / northwest(左上) / north(上) / south(下) / east(右) / west(西) のように方角で指定します。 右上なら northeast です。 |
-font | フォントの種類 | convert -list font コマンドで、ご自身のOS で使用可能なフォントが検索できます。 |
-fill | 文字色 | |
-pointsize | 文字サイズ | |
label: | 記入する文字 | 改行は \n |
画像の背景を透過させるのにとても苦労しました。
注意点としては、以下2点です。
・ JPEG では透過の情報を保持できないので、PNG にする。
・ -border(枠線)
オプション をつけると透過できない。(オプションの順番を変えるとできるかもしれません。)
-gravity
で文字の場所を指定する方法が方角なのが、楽しいですね〜^^
ちなみに、最近断捨離にハマっていてゆるめのミニマニストに憧れているので、それっぽい文字を入れてみました。
こういう投稿、大好物です。。
STEP4 画像を重ね合わせる
最後に画像を重ね合わせます。
convert
のあとは、<重ねる際下に置く画像名> <上に重ねる画像名> がきます。
また、最後に -compose over -composite <出力時の画像名>
を指定してあげます。
1 2 3 4 5 6 |
## STEP2 で作成した画像に、STEP3 で作成した 文字画像1 を重ねる convert contrast.png main_text.png -geometry +400+300 -compose over -composite thubmnail.png ## 上記で作成した画像に、STEP3 で作成した 文字画像2 を重ねる convert thubmnail.png sub_text.png -geometry +730+250 -compose over -composite Completed.png |
オプション | 内容 | 詳細 |
---|---|---|
-geometry | 画像を貼り付ける位置 | (x座標) x (y座標) |
今回は、 -geometry
で位置を指定しましたが、大体の位置指定で良いなら STEP3 の -gravity
を使うことも可能です。
完成!
おわりに
今回は、 ImageMagick で YouTube のサムネっぽい画像を作ってみました。
最初はとっつきにくかったのですが、慣れると簡単にいろんなものが作れて楽しかったです^^
オプションが豊富で、まだまだいろんなものが作れそうなので、また次の機会にご紹介します!