はじめに
こんにちは。@yug1224(Yuji Yamaguchi)です。
丸く切り抜いたサムネイル画像を使いたかったので、ImageMagickで加工した方法をメモ。
TL;DR
300x300のサムネイル画像を作成するワンライナーコマンドは下記。
convert src.jpg -resize '300x300^' -gravity center -extent 300x300 \( -size 300x300 xc:none -fill white -draw 'circle 150,150 150,0' \) -compose CopyOpacity -composite dst.png
手順説明
- 加工する画像を正方形に切り取る
- マスク用に丸い画像を作る
- 正方形の画像と丸い画像を合成する
加工する画像は下記。フリー写真素材ぱくたそから拝借しました。
1. 加工する画像を正方形に切り取る
まず加工する画像を任意の大きさにリサイズします。この時に-gravity
を使って、円にしたい箇所も切り出しておきます。
convert src.jpg -resize '300x300^' -gravity center -extent 300x300 tmp.png
2. マスク用に丸い画像を作る
次にマスク用の正円画像を作ります。この円の大きさが最終的なサムネイル画像の大きさになります。
円の外側を透過にしたいのでアウトプットはpng画像にします。
convert -size 300x300 xc:none -fill white -draw 'circle 150,150 150,0' msk.png
※-fill white
だと白い円で見えなくなってしまうので、添付画像ではわかりやすいように-fill black
にしています。
3. 正方形の画像と丸い画像を合成する
切り出した正方形の画像とマスク用の円の画像を合成します。
convert tmp.png msk.png -compose CopyOpacity -composite dst.png
冒頭にも記載した通り、すべての処理をワンライナーでも実行可能です。dst.pngを出力する処理を ()
で入れ子にして指定します。
convert src.jpg -resize '300x300^' -gravity center -extent 300x300 \( -size 300x300 xc:none -fill white -draw 'circle 150,150 150,0' \) -compose CopyOpacity -composite dst.png
まとめ
パラメーターを変えれば、切り出す位置やリサイズの大きさ、正円ではなくて楕円や角丸なども対応できるので、画像加工アプリでは難しい微調整に良さそうです。
以上、ImageMagickを使って、丸いサムネイル画像を作成する方法を紹介しました。
PR
HRBrainでは一緒に働く仲間を募集しています。歴史に残るトライをしよう!