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

スクリプトの実行結果

スポンサーリンク





ピックアップ記事

  1. awk if サンプルでわかる条件文の書き方 一致・大小比較・正規表現を簡潔に書く方法

    awkのif条件文は、条件によって処理をわけたいときに使います。条件式では、0の判定・関係演算子・…
  2. awk for 繰り返し処理 簡単なサンプルでわかる インクリメント・デクリメント、変わった繰り返し

    awkのfor文は、カウンタを目印にして処理を繰り返したいときによく使われます。for文では、カウ…
  3. R plot 重ねる方法3パターン サンプルでわかるRの使い方

    Rでグラフ (plot) を重ねる方法は、「単純な追加」「図に重ねて描画」「濃淡で重なり表現」の3…

人気記事

  1. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  2. R データ型 - 文字列・ベクター・データフレーム・マトリックス など-, R言語, スクリプト

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  3. Excel, その他, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…

おすすめ記事

  1. awk, bash 文字列操作, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. bash 応用, シェルスクリプト

    シェル スクリプト ファイル存在チェック・空のファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…
  3. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…