GIMPのガイドを自動生成
普段、私は画像編集に「Paint.NET」を使っています。
この見出し画像もPaint.NETで作っています。
パソコンのスペックが低いのと、それほど手の込んだ画像編集はしないため、GIMPはほとんど使っていません。
使うとすれば、不要な映り込みを消したり、特殊効果を使ったりするときくらいです。
今回はGIMPでプラグインを作成する必要があったため、GIMP-Pythonで作成してみました。
GIMP-Pythonってなに?
GIMPが提供している、機能拡張用のライブラリlibgimpに、Pythonからアクセスできるようにしてくれるラッパーモジュールです。
ようするに、PythonからGIMPを操作したり、作ったスクリプトをプラグインとして登録することができる、というモノです。
Python-Fuとも呼ばれているようですが、公式サイトには「GIMP-Python」と表記されていたため、それに倣います。
ガイドを一定間隔で生成したい
GIMPには「ガイド」と呼ばれる機能があり、これを利用すると画像を任意のサイズで分割できます。
ところが、ガイドは一度にひとつしか生成できないため、分割数が多くなるほど手間がかかります。
50回も同じ作業はしたくないので、一定間隔で生成するプラグインを作ります。
なぜそんなものが必要か
経緯と、仕様だけ列挙しておきます。
■経緯
・大きなサイズの画像をWebで表示しようとすると、時間がかかるので表
示時間を見た目でもいいから短縮させたい。
・そのため画像を任意のサイズで分割したい。
■仕様
・原則として、分割は一定サイズで実行。
・分割するサイズは指定可能。
・分割位置は、手動で調整可能。
ようするに、Excelの改ページ機能もどきを画像で実現したいということです。
フリーソフトも探しましたが、一定サイズでの分割はできても、微調整ができないんですよねぇ。
まぁ特殊な仕様ですから仕方ありませんが。
ガイド自動生成プログラム
#!/usr/bin/python
from gimpfu import *
def plugin_main(timg, tdrawable, cutsize):
try:
cnt = (timg.height // cutsize) + 1
epos = cutsize
for i in range(1, cnt):
epos = cutsize * i
pdb.gimp_image_add_hguide(timg, epos)
except Exception as e:
gimp.message(e)
register(
"python_fu_set_guides_in_bulk",
"Add Guides active layer",
"Input divide size",
"kawasuke",
"kawasuke",
"2023",
"Set Guides in Bulk",
"RGB*, GRAY*",
[(PF_IMAGE, "timg", "Input image", None),
(PF_DRAWABLE, "tdrawable", "Input drawable", None),
(PF_INT32, "cutsize", "Specify cut size", 500),],
[],
plugin_main,
menu = "<Image>/Image"
)
main()
今回は横方向にだけ分割するので、pdb.gimp_image_add_hguide を使って水平方向のガイドだけ引くようにしています。
上記コードを「Set_Guides_in_Bulk.py」として、GIMPのplug-insフォルダに保存します。
GIMPを起動すると「画像」メニューの最下段に、作成したプラグインが表示されました!
適当な画像を読み込み、プラグインを実行すると、分割値の入力ダイアログが表示されました。
OKをクリックすると、意図通りに複数のガイドの生成に成功!
後はBIMPにお任せ…できなかった
ガイドの位置を決めたら、「画像」→「Slice Using Guides」で画像を分割します。
後は分割後のxcfファイルを、BIMP(GIMPのバッチ処理)でエクスポートすればOKです。
が、なかなか思うようにはいかず。。。
BIMPでエクスポートしようとすると、エラーが出ます。
色々試してみると、どうやらエクスポートするxcfファイルは保存されている必要があるようです。
BIMPには複数のxcfファイルを保存する機能はありません。
作るかぁ。。
動作環境
OS:Windows10
Gimp:バージョン 2.10.34
Python:バージョン 3.9.0
参考にしたサイト
Gimp Python Documentation:公式サイトです。
Gimp Reference:Pythonから利用可能なメソッド調査に役立ちました。
Begining GIMP:Beginning Gimp の著者 Akkana Peck さんのサイト。
サンプルがあります。
この記事が気に入ったらサポートをしてみませんか?