Gimpのpython-fuで画像を一括保存する
Gimpは画像の編集や加工ができるフリーのソフトウェアで多くの人に使われているソフトウェアです。そのGimpには作業を自動化するためのスクリプトを実行するための機能がそなわっており、それがpython-fuやscript-fuになります。この二つは別物でpython-fuはプロミング言語のpythonでコードを書くことができます。
一口にpython-fuを使うといっても二つの使い方がありますのでまずそちらを解説します。
python-fuを実行する2つの方法
python-fuを実行する方法は2つあります。以下に示します。
- python-fuのコンソールにコードをそのままはりつけてコードを実行する方法
- gimpのスクリプトフォルダにpythonファイルをいれてプラグインとして使用する方法
今回はコンソールにコードを貼り付けてコードを実行する方法を解説します。
プラグインとして使用する方法に関しては以下の記事をご覧ください。
【Gimp】Python-fuでプラグインを追加する方法。トラブルなど。
gimpのpython-fuのコンソールを開く
gimpのpython-fuを開くにはまずgimpを起動して、「メニュー」⇒「フィルター」⇒「python-fu」へと移動します。
「Console」を選択するとpython-fuのコンソールがたちあがります
コンソールにpythonコードを貼り付けてEnterキーをおすとコードが実行されます。プラグインとして使用するほうが手軽に使えますが、プラグインとして導入するのは少々敷居が高いのでコンソールを使用するほうが簡単かもしれません。
gimpの開いている画像を一括保存するpythonコード
gimpの開いている画像を一括保存するpythonコードを紹介します。
import os path = "C:\\Users" count = 0 for img in gimp.image_list(): count += 1 newpng = os.path.join(path, str(count) + ".png") pdb.gimp_file_save(img, img.active_layer, newpng, "")
コードの解説
- 1行目はimport osでメソッドを使うためのライブラリをインポートします
- 2行目はpath変数に画像を保存するフォルダを指定します。好きなフォルダを指定できます
- 3行目はgimp.image_list()に注目です。これはgimp固有のもので開いている画像がリストとして格納されています。これをfor文でひとつひとつ取り出すということです
- 4行目のcount変数は連番で保存するための変数になります
- 5行目のos.path.joinはpath変数とそのあとにつづく。ファイル名と拡張子を連結して一つのpathにします
- 最終行のpdb.gimp_file_save()に注目です。このpdbというのはプロシージャ―データベースの略でgimpのデータベースから使うメソッドになります。パラメーターはforで取り出した画像、2番目のパラメーターはアクティブになっているレイヤー、3番目のパラメーター先ほどのnewpngを指定しています
このコードを実行すると画像が一括保存されますが、もしうまくいかない場合はコードがどこかミスしているかもしれません。path変数は自分が保存したいフォルダを指定するようにします。
コメント
解説ありがとうございます。
現在、100~200枚の連続画像を一括で2値化処理しかつ一括でフォルダに保存する方法を試みています。
一括保存のコードを同様に打ち込んだのですが、
Traceback (most recent call last):
File “”, line 4, in
RuntimeError: ‘C:\Users\1.jpg’ を開いて書き込むことができません。
Permission denied
というエラーが出てしまいました。
pathを所望のフォルダに設定したのですが、うまくいかないです。
pythonも初心者のため苦闘しております。
改善点などをご指摘いただけますと幸いです。
確認しました。
Usersフォルダは読み取り専用になっているので書き込むことができません。そこまで確認せずにコードを貼り付けてしまいました。
pathの部分を'”C:\\users\\username””あたりに変えてください。usernameは自分でつけた名前のディレクトリを指定してください