画像の拡大・縮小
-geometry -resize -thumbnail mogrify
ここからは、目的別にコマンドとオプションの指定方法等を記載していきます。
まずは、ImageMagickを使ったWEBサービスを作成する際に、一番利用頻度が高いと思われる画像のサイズ変更です。
例) convert before.jpg -resize 150×150 after.jpg
サイズ変更の最も基本的な構文は、上記のようになります。
(width)、(height)はピクセル数を数字で指定します。
ここで注意していただきたいのが、上記のように記入した場合、ImageMagickのデフォルトの仕様で、縦横のアスペクト比を維持したまま拡大縮小するという点です。
そのため、縦または横が指定した値になると、その時点で画像が生成されます。
1. 縦横比を無視して拡大・縮小したい場合
縦横のアスペクト比を無視して拡大・縮小したい場合は、下記のようにサイズ指定の後に“!”を記入する。
すると、強制的に指定サイズに画像を変更する。
convert <変換前の画像名> -resize (width)x(height)! <変換後の画像名>
例) convert before.jpg -resize 150×150! after.jpg
2. 幅または高さを任意で拡大・縮小
幅(または高さ)だけを指定して、高さ(または幅)は任意のサイズで画像を生成したい場合は以下のように記入します。
未指定の要素は、縦横のアスペクト比に沿って任意のサイズで生成されます。
convert <変換前の画像名> -resize (width)x <変換後の画像名>例) convert before.jpg -resize 150x after.jpg
convert <変換前の画像名> -resize x(height) <変換後の画像名>例) convert before.jpg -resize x150 after.jpg
WEBサービスなどで使用するために、画像の縦横のどちらかだけを統一させたい場合などに重宝する指定方法です。
3. パーセンテージで拡大・縮小したい場合
ピクセルでのサイズ指定の他に、パーセンテージで画像サイズを変更する方法があります。
例)convert before.jpg -resize 30% after.jpg
ピクセルでのサイズ指定同様、縦横のアスペクト比を維持したまま拡大縮小されます。
4. 指定より大きい(小さい)場合のみ拡大・縮小
WEBサービス等で不特定多数の画像サイズを受容する場合、一定サイズを超えたときのみ画像サイズを縮小したいケースがあります。
そのような場合には、以下のように記入します。
convert <変換前の画像名> -resize (width)x(height)> <変換後の画像名>
例)convert before.jpg -resize 150×150> after.jpg
<変換前の画像>のサイズが、(width)x(height)の数字より大きい場合のみ、指定サイズへの変換が実行されます。
小さい場合には、サイズ変更が行われずに画像が生成されます。
convert <変換前の画像名> -resize (width)x(height)< <変換後の画像名>
例)convert before.jpg -resize 150×150< after.jpg
また逆に上記のように書くと、<変換前の画像>のサイズが、(width)x(height)の数字より小さい場合のみ、指定サイズへの変換が実行されます。
大きい場合には、サイズ変更が行われずに画像が生成されます。
5. geometry,thumbnailを使用したサイズ変更
ImageMagickでは、-resizeの他にも画像サイズを変更することができるコマンドが用意されています。
-geometry
convertと合わせて使用すると、-resizeと同様に画像を拡大縮小します。
-geometryに関しては、合わせるコマンドによって振る舞いが変わるという仕様があるため、-convert以外のコマンドと使用する際には注意が必要です。
詳しくは、オプションのリファレンスを参照してください。
-thumbnail
-resizeとほぼ同様に使用することができます。
-resizeとの違いとして、-thumbnailを使用して拡大縮小すると、変換前の画像に埋め込まれていた画像情報、コメントなどが抹消されます(カラーのプロファイル除く)。
6. 画像サイズの一括変換(mogrify)
convertの代わりに、mogrifyというコマンドを使用することにより、画像サイズを一括変換することができます。
mogrify -resize (width)x(height) <変換前の画像名>
例)mogrify -resize 100×100 *.jpg
mogrifyを使用した場合、基本的に生成後の画像は、生成前の画像に上書きされます。
画像名を*(ワイルドカード)にすることにより、同一フォルダ内のすべての画像を一括変換することができます。
最後までお読みいただきありがとうございます。お役に立てましたなら嬉しいです。