GIMP Python插件将2个图像作为图层加载

问题描述 投票:1回答:1

我正在尝试为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之前从pdb中查找图像的大小,或者我必须为此使用另一个库(例如PIL)?我正在尝试使插件的依赖性降到最低。

保证两个图像具有相同的尺寸。

由于File-> Open会自动将画布调整为图像大小,我希望会有一种不错的方法来实现这一目的。

问题2

我想自动创建当前工作文件并将其设置为result_f + '.xcf'(请参见上面的代码)-这样,文件->保存将自动保存到该文件。在pdb中可以吗?

问题3

最重要的是,我目前将“蒙版”图像另存为黑白图像。将蒙版作为新层加载后,我想将黑色转换为透明,将白色转换为绿色(0,255,0)。另外,由于将它们另存为.jpg图像,因此白色和黑色不一定精确地为255和0强度,但是可以稍微偏离一点。

如何在我的插件中自动执行此操作?

python plugins gimp gimpfu
1个回答
1
投票
  1. 好的方法是正常加载第一个图像,其余图像作为附加层。否则,一旦加载了所有图层,就可以重置画布大小(pdb.gimp_image_resize(...)),然后创建显示。

  2. 您可以通过设置image.nameimage.filename为图像指定名称和默认文件。

  3. 要将白色转换为绿色,请使用pdb.plug_in_colors_channel_mixer(...)并将所有增益设置为0。绿色除外。使黑色透明使用pdb.plug_in_colortoalpha(...)

PS:对于color2alpha:

import gimpcolor

color=gimpcolor.RGB(0,255,0) # green, integer args: 0->255)
# or
color=gimpcolor.RGB(0.,1.,0) # green, floating point args (0.->1.)

pdb.plug_in_colortoalpha(image, layer, color)

据我所知,这仅适用于8位图像,在32位FP图像上我得到非常奇怪的结果/

Python文档是Scheme一的直接副本。在Python中,RUN-INTERACTIVE参数不是位置参数,因此它不会出现在大多数调用中,如果需要,它是关键字参数。

© www.soinside.com 2019 - 2024. All rights reserved.