アストラルプリズム

PC、スマホ、ゲームなどの備忘録と日記

GIMPプラグインを作る際の要注意事項

簡単に言うとはまったところのメモ書き
GIMP2.10.30 Python 2.7.18

作る前に

自分が欲しいと思っている機能は他の人も欲しいと思って作っている可能性大なのでプラグインを探してみる事。

プラグインにこだわらない事も重要

プラグインは以下のような悲しい点がある
・python2
・pipでライブラリーを増やせない
GIMP内では手動で出来るのにプラグインにはできない機能がある
GIMP外から取ってきたクリップボードの情報が取得できない(手動なら可能)

なのでモノによってはGIMPのすべての機能にショートカットキーをつけれる機能とマクロソフトを組み合わせて使った方が楽。


日本語のパスが含まれる場合

# -*- coding: utf-8 -*-をしている前提で。
フォルダーのアドレスに日本語が含まれる場合

folder_path=folder_path.decode("utf-8")
p = os.path.join(folder_path,"*.jpg")
for jpg in glob.glob(p):
	image = pdb.gimp_file_load(jpg, "")
	disp = pdb.gimp_display_new(image)

ただしimage.filenameからとってsaveする場合は特に何もしなくても問題ないのでよく分からない。

save_file_name = image.filename
save_name, ext = os.path.splitext(save_file_name)
save_path = save_name + ".xcf"
pdb.gimp_file_save(image , text_layer , save_path , save_path)

gimp上のpythonコンソール上の注意

gimp上のpythonコンソールでglob.globを使う際には
スラッシュを二個つけるか

glob.glob("C:\\Users\\name\\Desktop\\新しいフォルダー\\*.jpg".decode("utf-8"))

バックスラッシュを一個つける

glob.glob("C:/Users/name/Desktop/新しいフォルダー/*.jpg".decode("utf-8"))

注意:普通のスラッシュ一個だけだとうまくいかない

glob.glob("C:\Users\name\Desktop\新しいフォルダー\*.jpg".decode("utf-8"))
結果
[]

gimppythonコンソール上だと動くがプラグインにすると動かないものがある。

from __future__ import unicode_literals, print_function
が通るがいざプラグインにしてみると動かなかった悲劇。

GIMPのアクティブなウィンドウを指定できない

検索してみたがアクティブなウィンドウを指摘できず回避方法(?)としては自分が開いたウィンドウの

disp = pdb.gimp_display_new(image)

を使うか以下のような開いているウィンドウ全部にプラグインを適用するしかないっぽい。

for image in gimp.image_list():

本文のdefの変数の順番

本文のdefの変数の順番はregisterで書いた入力ウィンドウPF_なにがしの順番にすること

def tategaki_text_save_xcf(text_number , font , font_size ,tategaki ,already_open_image , folder_path):

↓入力ウィンドウを書いた順にする

f:id:katsumi3:20220328204734p:plain
必ずこの順番に!

GIMPpythonのバージョンは2.7.8である

悲しいことにpython3ではないのである。
検索して見つけたコードを使ってみても動かない時はpython3でしか動かないモノかどうかも疑ったほうが良い