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」を使っているのですが、メッセージが表示されません。
想定では、下図のようにダイアログとして出てきてほしいのですが、どうやっても出てきませんでした。
GIMPのエラーコンソールには表示されているので、確認はできるのですが、不便なことこの上ない。
これは今後の課題としておきます。
使い心地は…
正直微妙ではあります。
画像の一部を選択すれば水平ガイドだけ生成する、という狙った動きに問題はないので、その点だけは満足です。
今回作ったプラグインにショートカットキーを割り当てれば、少ない手数でガイドも生成できます。
今後の課題
gimp.messageでエラーを表示する
マウスポインターの位置を取得する
この記事が気に入ったらサポートをしてみませんか?