如何将几个PNG图像合并为单个XCF图像的图层?

4
我有几张PNG图片,需要将它们作为单独的图层合并到新的GIMP XCF图像中。我需要多次执行此任务,因此最好使用基于脚本的解决方案。
到目前为止,我尝试过在GIMP的批处理模式下进行操作,但是失败了。
1个回答

4

我建议在处理这个问题时不要使用Scheme,而是使用GIMP-Python绑定,因为它更容易操作文件和列表。

如果你查看过滤器->Python->控制台,你会进入一个交互模式 - 在底部会有一个“浏览”按钮,让您选择任何GIMP API中的程序并直接将其粘贴到此控制台中。

API调用中有一个"将文件作为图层加载"的功能 - pdb.gimp_file_load_layer

然而,这将使图像存储到内存中,但不会添加到图像中 - 之后必须调用pdb.gimp_image_insert_layer

您可以直接在交互式控制台中键入此内容,或者查看我的其他有关GIMP的答案或一些关于GIMP-Python的资源,将其转换为插件,这样每次执行任务时就不需要粘贴此代码了:

def open_images_as_layers(img, image_file_list):
    for image_name in image_file_list:
        layer = pdb.gimp_file_load_layer(image_name)
        pdb.gimp_image_insert_layer(img, layer, None, 0)

img = gimp.image_list()[0]
image_list = "temp1.png temp2.png temp3.png"
open_images_as_layers(img, image_list.split())

倒数第二行的代码 img = ... 选取了在GIMP中一个打开图像所需的引用 - 如果你愿意,也可以使用pdb调用来创建新图像(如下面的示例)。文件列表是上面代码片段中硬编码的、以空格为分隔符的字符串,但你可以按照Python允许的任何方式创建文件列表。例如,要获取c:\Documents and Settings\My user\Pictures文件夹中所有的“.png”文件名,可以执行以下操作:
from glob import glob
image_list = glob("c:/Documents and Settings/My user/Pictures/*png")

创建图像程序:

img = gimp.Image(1024, 768)
pdb.gimp_display_new(img)

哇,太棒了,我想这就是我需要的! - Andre
“gimpfu” 严格来说是只用于Scheme语言吗?许多GIMP的Python插件似乎包括“从gimpfu导入*”,因此我有点困惑应该如何使用这些术语:script-fu,gimp-fu,plugin等等。 - jacobq
在GIMP Python绑定中有一个名为“gimpfu”的Python模块 - 我曾经将其与scheme中脚本的名称“scriptfu”混淆过,通常情况下这是指scheme中的脚本。 - jsbueno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接