ImageMagick 使い方 一括画像処理のスクリプト

スポンサーリンク

画像処理を簡単に行う方法です。Linuxで作業を行う場合、ImageMagickを使うことが多いです。ImageMagickには、コマンドラインツールが豊富なので、バッチ処理などを使ってGUIを使わずとも画像処理ができるのが魅力です。面倒な画像処理をスクリプトで一括処理、なんてことも簡単にできてしまいます。

ImageMagick

ImageMagick とは

ImageMagick(イメージマジック)は画像を操作したり表示したりするためのソフトウェアスイートである。GIF、JPEG、JPEG 2000、PNG、PDF、Photo CD、TIFF、DPXなど100種類以上の画像ファイルフォーマットに対応している。

Wikipedia ImageMagickより

ImageMagick 参考サイト

ImageMagick Command-line Tools

スポンサーリンク



ImageMagick 使い方

ImageMagick インストール

$ sudo apt install imagemagick

ImageMagick よく使うコマンド convert

下記の画像(water.jpg)を、ImageMagickのconvertコマンドで画像処理してみます。

画像サイズ変更

画像サイズを変更する場合は、convertコマンドを使います。-geometryオプションで、画像サイズを指定したり(100×100 など)・縮小を%で指定したり(50%x50% など)して変更することができます。下記サンプルでは、全て50%にリサイズした画像が生成されます。

$ convert -geometry 391x225 water.jpg water_size391x225.jpg
$ convert -geometry 391x water.jpg water_size391x.jpg
$ convert -geometry 50%x water.jpg water_size50p.jpg

画像フォーマット変換

画像フォーマットを変更する場合は、convertコマンドを使います(サイズ変更と同様)。オプションなしで指定した拡張子に変更することができます。

$ convert water.jpg water.png

画像回転

画像の回転を行う場合は、convertコマンドを使います(サイズ変更と同様)。-rotateオプションで回転角度を指定して回転することができます。

$ convert -rotate 90 water.jpg water_rotate90.jpg

画像2値化・グレースケール

画像の2値化(白黒)を行う場合は、convertコマンドを使います(サイズ変更と同様)。-thresholdオプションで輝度値を指定して2値化することができます。

$ convert -threshold 10% water.jpg water_threshold10p.jpg


画像のグレースケール化を行う場合は、-monochromeオプションを指定します。

$ convert -monochrome water.jpg water_monochrome.jpg

モザイク画像

画像のモザイク処理を行う場合は、convertコマンドを使います(サイズ変更と同様)。-sampleオプションを2つ指定します。2つのサイズを掛けて1になるように指定します(ならないとサイズが変更されます)。例えば、10%・1000%、20%・500%という風に指定します。

$ convert -sample 10% -sample 1000% water.jpg water_sample.jpg

その他の機能

ImageMagickにはたくさんの機能があります。-helpコマンドで確認することができます。

$ convert -help

スクリプトで画像一括処理

サイズ変更やフォーマット変換など、同じ画像処理を複数の画像に行う場合は、スクリプトでバッチ処理を行うのが便利です。

一括サイズ変換

スクリプト – resize_jpg.sh

フォルダ内「.jpg」拡張子をもつファイルをみつけて、1つずつ半分のサイズに変更します。サイズ変更後のファイルは、「resized」フォルダに名前を「_small.jpg」で保存します。

関連事項

Linuxコマンド ディレクトリを作成する mkdir
Linuxコマンド ファイルを確認する ls
bash for文の書き方
bash 変数の使い方
bash 文字列置換

#! /bin/bash

# リサイズ後の画像を保存するフォルダ
RESULT="resized"
mkdir -p ${RESULT}/

for x in *.jpg; do
    echo $x

    # みつけたjpgファイルを半分のサイズに変更
    # ファイル名を_small.jpgにして指定ディレクトリに保存
    convert $x -geometry 50% ${RESULT}/${x/.jpg/_small.jpg}
done

スクリプトの実行

$ ls
resize_jpg.sh  water1.jpg  water2.jpg  water3.jpg
$ chmod +x ./resize_jpg.sh
$ ./resize.sh

スクリプトの実行結果

スポンサーリンク



タイトルとURLをコピーしました