我正在尝试为 gimp 制作一个插件,它将两个图像作为单独的图层打开并转换其中一个(更多内容见下文)。我正在使用 GIMP 2.10.12。
我一直在努力为 GIMP 的 Python 接口找到合适的完整文档,并且主要是根据我能找到的代码片段来工作。这是我到目前为止所拥有的:
#!/usr/bin/env python2
import os
from gimpfu import *
def load_pair(img_f):
mask_f = img_f.replace(IMG_DIR, PRED_DIR)
result_f = os.path.splitext(img_f.replace(IMG_DIR, SAVE_DIR))[0]
result_dir = os.path.dirname(result_f)
if not os.path.isdir(result_dir):
os.makedirs(result_dir)
img = gimp.Image(100, 100)
pdb.gimp_display_new(img)
for f, name, pos in ((img_f, "Image", 0), (mask_f, "Mask", 1)):
layer = pdb.gimp_file_load_layer(img, f)
pdb.gimp_layer_set_name(layer, name)
pdb.gimp_image_insert_layer(img, layer, None, pos)
register(
"python_fu_open_image_pair",
...,
"<Toolbox>/Image/Open Image Pair",
"",
[(PF_FILE, "img_f", "Image:", None)],
[],
load_pair
)
main()
这种做我想要的,但有几个问题。
问题 1
目前我正在使用gimp.Image(100, 100)
打开一个新图像。这意味着我必须在每次加载新图像对时将画布拟合到图层并调整缩放和位置。
有没有办法在打开它之前从 pdb 中找到图像的大小,还是我必须为此使用另一个库(如 PIL)?我试图将我的插件的依赖项保持在最低限度。
这两个图像保证具有相同的大小。
由于 File->Open 会自动将画布调整为图像大小,我希望有一个很好的方法来实现这一点。
问题2
我想自动创建并将当前工作文件设置为result_f + '.xcf'
(参见上面的代码) - 这样 File -> Save 会自动保存到这个文件。这在pdb中可能吗?
问题 3
最重要的是,我目前将蒙版图像保存为黑白图像。将蒙版加载为新图层后,我想将黑色转换为透明,将白色转换为绿色(0,255,0)。此外,由于它们被保存为 .jpg 图像,因此白色和黑色不一定是 255 和 0 强度,但可以稍微偏离。
如何在我的插件中自动执行此操作?