【Gimp】python-fuを使って画像を一括保存する方法

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」へと移動します。
gimp-python-fu

「Console」を選択するとpython-fuのコンソールがたちあがります

gimp-python-fu2

コンソールに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変数は自分が保存したいフォルダを指定するようにします。