LoginSignup
26
13

はじめに

こんにちは。@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. 加工する画像を正方形に切り取る
  2. マスク用に丸い画像を作る
  3. 正方形の画像と丸い画像を合成する

加工する画像は下記。フリー写真素材ぱくたそから拝借しました。

飼い主に挙手させられる猫の画像

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では一緒に働く仲間を募集しています。歴史に残るトライをしよう!

26
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
13