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. 学会・会議で英語が絶望的にできなくて困るケース | オンライン開催で「英語力のなさ」を痛感した場合の対処法

    学会・会議で英語ができなくてに困るケース学会やイベント・会議などが、オンラインで開催される…
  2. r tidyverse 使い方 | 列 filter 絞り込み select関数 – dplyrパッケージ

    tidyverseで1つのデータフレームの列の絞り込みは、dplyrパッケージのselect関数を…
  3. プログラミングで疲れた脳をリフレッシュ 〜 鬼滅の刃「感動」と「やる気アップ」でストレス発散!

    ストレス発散は鬼滅で。「50%OFF」で読む!脳のパフォーマンスを上げるには、適度な休憩と…
  4. AWS ディスク容量不足 新しいボリュームを追加する

    バイオインフォマティクスでは大きなファイルを扱うことがあるので、ディスク不足に陥ることがあります。…
  5. 「知っている」と「知らない」とでは、もしものとき、大違いになる – コロナうつ対策

    コロナうつなどという言葉を聞くようになりましたが、派遣切り、解雇、リストラは、これから本格化します…

人気記事

  1. R言語

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  2. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  3. Excel, 統計

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

おすすめ記事

  1. シェルスクリプト

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

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  3. R言語, グラフ

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