GIMPで画像調整のバッチ処理

date:05.03.20

したいこと

昔スキャンした雑誌の画像を見やすいように補正。 画像のデータのフォーマットはxcf(gimpのフォーマット。たぶんgimpからスキャンしたんでしょうね。)で色はグレースケール、枚数は約700枚ほど。ほとんどが同じ雑誌で発売月ごとにディレクトリを分けてある。

すること

ディレクトリ以下すべての画像に対しレベルの調整とシャープ化とトリミングを行い、一般的な画像フォーマットで、元画像と同じディレクトリの構成で出力する。

作ったもの

xcf2jpg.scm

このファイルを$HOME/.gimp/scripts/にコピーします。 レベルの調整にgimp-levels、シャープ化にplug-in-sharpen、トリミングにはgimp-image-cropを用いました。これらはそれぞれLayer->Colors->Levels...、Filters->Enhance->Sharpen...、Image->Canvas Size...で提供される機能です。値の設定は実際にファイルを開きそれぞれの調整を行って、最適と思われるものを使用してください。このスクリプトでは入力ファイルの形式がXCFとなっていますが、RGBかGrayscaleなら他の形式でも問題ありません。保存するjpgのオプションは必要に応じてスクリプトを書き変えてください。


gimpのXtnsから呼び出した画面

コマンドの名前はxcf2jpgで引数は画面と上から順に対応しています。トリミングを行いたくない場合はCropのチェックを外してください(デフォルト)。オフセットの値は±逆にしないといけないかもしれません。 このスクリプト自体では値のチェックは行いませんので適当に設定すると実行できないことがあります。

バッチ処理

上記のスクリプトだけでは一枚のファイルに対してしか処理を行えないため、これをシェルスクリプトから実行することにします。
#!/bin/sh

for i in `find . -name "*.xcf"`
do
       if [ ! -d /tmp/images/`dirname $i` ]; then
               mkdir /tmp/images/`dirname $i`
       fi
       gimp -i -b "(xcf2jpg \"$i\" \"/tmp/images/`dirname $i`/`basename $i xcf`jpg\"
       20 230 1.00 0 255 50 0 0 0 0 0 0)" "(gimp-quit 0)"
done
このスクリプトは、実行したディレクトリ以下の*.xcfというファイル全てに同じ処理を行い、結果を/tmp/images以下に元データと同じ構成で出力します。実行したディレクトリだけで調整を行いたい場合は`find . -name "*.xcf"`の部分`*.xcf`に変更してください。

参考にしたページ

gimpでバッチ処理
Script-Fuで画像形式変換のバッチ処理

gimpの優れているところって、こういうスクリプト処理が簡単に出来るところですよね。 ただ、プログラムを知らない人にとってschemeはどうなんだろう。
ちなみにPython-Fuというのもあって、こちらではPythonでスクリプトを書くことができるようです。


Back