有馬総一郎のブログ

(彼氏の事情)

2022年08月06日 19:00:08 JST - 2 minute read - Comments - Linux

Linuxで複数画像を一括でトリミングする

複数画像を一括でトリミングする、ということでまんまだが。初めは画像ごとに、範囲を選択していたが、やはりそれだと1pxel単位でズレが生じたり綺麗にトリミングできない。

Batch Crop Images With Imagemagick - deparkes

に書いてあるとおり。まずは、切り抜き開始する左上の座標を調べる。ここでのズレが全画像に影響するので拡大しまくって、数字を確認する。

左上(開始)座標(横・縦) 右下(終了)座標(横・縦) 画像の大きさ(横・縦)
196,0 1724,1080 1528,1080

画像の大きさ(横・縦) = 右下座標 - 左上座標

そして、 ImageMagick – Convert, Edit, or Compose Digital Imagessudo apt install imagemagickなりsudo pacman -S imagemagickでインストールする。

convert -crop WIDTHxHEIGHT+X+Y inputfile outputfile。で切り抜ける。

convert -crop 1528x1080+196+0 '切り抜き前画像01.png' '切り抜き後画像01.png'
convert -crop 1528x1080+196+0 '切り抜き前画像02.png' '切り抜き後画像02.png'
convert -crop 1528x1080+196+0 '切り抜き前画像03.png' '切り抜き後画像03.png'
convert -crop 1528x1080+196+0 '切り抜き前画像04.png' '切り抜き後画像04.png'
convert -crop 1528x1080+196+0 '切り抜き前画像05.png' '切り抜き後画像05.png'
convert -crop 1528x1080+196+0 '切り抜き前画像06.png' '切り抜き後画像06.png'
convert -crop 1528x1080+196+0 '切り抜き前画像07.png' '切り抜き後画像07.png'
convert -crop 1528x1080+196+0 '切り抜き前画像08.png' '切り抜き後画像08.png'
convert -crop 1528x1080+196+0 '切り抜き前画像09.png' '切り抜き後画像09.png'

でOK。

左上(開始)座標(横・縦) 右下(終了)座標(横・縦) 画像の大きさ(横・縦)
312,0 1608,1080 1296,1080

の場合は、convert -crop 1296x1080+312+0 inputfile outputfileとなる。

画像フォーマットも変換する場合はmogrify -crop WIDTHxHEIGHT+X+Y -format jpg *.pngとする。

Windowsでは既にconvertが別コマンドとして存在するので、 Windows + ImageMagick > はまり > convertコマンドを使おうとして失敗 > Windowsにもあるコマンド - Qiitaのように"C:\Program Files\ImageMagick-7.0.8-Q16\magick.exe" convert やりたいオプションとやるようだ。

で、ローカルでimagemagickで使う分には問題ないが、サーバー処理としては、色々気を付けるポイントがあるようだ。下記サイトを参照してもらいたい。