ImageMagick」タグアーカイブ

ImageMagickを使って画像をタイルに分割したり結合したりする方法

ImageMagickを使ってコマンドラインから画像をタイル分割したり結合したりする方法の紹介です。ドット絵のマップチップを分割・結合したい時などで便利です。

タイルに分割

1枚の画像をタイル分割したい場合は-cropオプションを使って次のようにします。

$ convert -crop 100x100 source.png tile-%d.png
$ ls
source.png tile-0.png tile-11.png tile-2.png tile-4.png tile-6.png tile-8.png
tile-10.png tile-1.png tile-3.png tile-5.png tile-7.png tile-9.png

100x100は分割したいタイルのサイズです。分割後のファイルを001002003のように番号付けしたい場合は%dの代わりに%03dを使ってみてください。

分割したタイルを結合

分割したタイルを1枚の画像に戻したい場合は-tileオプションを使って次のようにします。

$ montage -tile 4x3 -geometry +0+0 tile-*.png result.png

4x3の部分がタイルを縦横に何枚並べるかを設定している部分です。

※アルファチャンネルの情報が消えてしまう場合は-background noneのオプションを試してみてください。

Windows版のImageMagick

ImageMagickは主にLinux系のシステムで使われている画像編集ツールですがWindows版のexeもあります。(リンクを参照してください。)

Windows版のImageMagickを使う場合はconvertmontageの前にmagick.exeを追加したコマンドを使います。

magick.exe convert -crop 100x100 source.png tile-%d.png
magick.exe montage -tile 4x3 -geometry +0+0 tile-*.png result.png

リンク

ImageMagick – Download
https://imagemagick.org/script/download.php

ImageMagickのconvertコマンドでサムネイル画像を作成

ImageMagickのconvertコマンドを使って画像をresize & cropする方法を調べてみました。

オリジナルの画像(src.jpg)

アスペクトを維持して画像全体が含まれるようにリサイズ

$ convert -resize 200x200 -gravity Center -extent 200x200 src.jpg dst.jpg

CSSのbackground-size:containのような感じです。-gravity Centerはリサイズ後の配置に影響します。NorthWest/North/NorthEast/West/Center/East/SouthWest/South/SouthEastが使えます。

アスペクトを無視してリサイズ

$ convert -resize 200x200! -extent 200x200 src.jpg dst.jpg

アスペクトを維持して余白がないようにリサイズ

$ convert -resize 200x200^ -gravity Center -extent 200x200 src.jpg dst.jpg

CSSのbackground-size:coverのような感じです。切り取る部分を変更したい場合は-gravity Centerの部分を変更してみてください。

Windows環境で200x200^がうまく動作しない場合は200x200^^を試してみるとうまく動作する場合もあるみたいです。