見出し画像

GIMPのガイドを任意の場所に生成

前回までで、以下のことが実現できました。
GIMPでガイドを一定間隔で生成
xcfファイルを一括保存

それで実際に使っていたのですが、不便な点があったので、もうひとつプラグインを作ってみました。

マウスポインターの場所にガイドを生成したい

複数生成したガイドを微調整していくと、ガイドが足りなくなることが多々ありました。
その時はGIMPの「新規ガイド」で対応していたのですが、いちいち座標を指定するのが面倒で、かなり手間でした。

新規ガイドの生成画面

そこで今回目指したのは、マウスポインターのあるY座標に、水平方向のガイドを生成することです。

が、一通りドキュメントを確認しても、マウスの座標に関するAPIを見つけられませんでした。
GIMPの「ピクセル情報」に表示されている数値が欲しいだけなのですが。。。
探し方が足りないんでしょうか。

マウスポインターから選択範囲に変更

マウスポインターの座標の取得方法は分かりませんでした。
そこで「画像の一部を範囲選択し、水平ガイドを生成する」に方針を変えました。

ちなみにGIMPにも「選択範囲から新規ガイド」という機能があります。
この機能は水平・垂直の両方のガイドを生成してくれる、便利な機能ではあるんですが、今回は垂直ガイドが不要なので、使いませんでした。

GIMPの「選択範囲から新規ガイド」は以下のような動きをします。
1)ガイドを生成したい範囲を選択します。

ガイドを生成したい範囲を選択

2)「選択範囲から新規ガイド」を実行すると、選択範囲の各頂点に対して、 
 ガイドが生成されます。

ガイドを生成した後

私が欲しいのは、左上のY座標に対する水平ガイドだけです(赤で強調しているガイド)。

ガイド生成プログラム

#!/usr/bin/python
# -*- coding: utf-8 -*- 

from gimpfu import *

def plugin_main(timg, tdrawable):

	(non_empty, x1, y1, x2, y2) = pdb.gimp_selection_bounds(timg)
	if non_empty == 0 :
		gimp.message("ガイドを引きたい箇所を矩形選択してください")
		return
		
	pdb.gimp_image_add_hguide(timg, y1)
	
register(
		"gimp_python_set_guide",
		"ガイドを生成",
		"Nothing to do.",
		"kawasuke",
		"kawasuke",
		"2023",
		"ガイドを生成",
		"RGB*, GRAY*",
		[(PF_IMAGE, "timg", "Input image", None),
        (PF_DRAWABLE, "tdrawable", "Input drawable", None),
		],
		[],
		plugin_main,
		menu = "<Image>/Image"
		)

main()

上記コードを「set_guide.py」として、GIMPのplug-insフォルダに保存します。
GIMPを起動すると、「画像」メニュー内に作成したプラグインが表示されます。

プラグインの表示

今回は色々調べて、メニューの日本語化にもチャレンジしてみました。
GIMPの問題ではなく、Python側で文字コードを指定する必要があるんですね(2行目)。

ただ、範囲選択されていないときに、エラーメッセージを出すため「gimp.message」を使っているのですが、メッセージが表示されません。

想定では、下図のようにダイアログとして出てきてほしいのですが、どうやっても出てきませんでした。

例)BIMPのエラーメッセージ

GIMPのエラーコンソールには表示されているので、確認はできるのですが、不便なことこの上ない。
これは今後の課題としておきます。

使い心地は…

正直微妙ではあります。

画像の一部を選択すれば水平ガイドだけ生成する、という狙った動きに問題はないので、その点だけは満足です。
今回作ったプラグインにショートカットキーを割り当てれば、少ない手数でガイドも生成できます。

今後の課題

  1. gimp.messageでエラーを表示する

  2. マウスポインターの位置を取得する

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