簡単に言うとはまったところのメモ書き
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")) 結果 []
gimpのpythonコンソール上だと動くがプラグインにすると動かないものがある。
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):
↓入力ウィンドウを書いた順にする