見出し画像

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 さんのサイト。
         サンプルがあります。


この記事が気に入ったらサポートをしてみませんか?