4

我有几个 PNG 图像,我需要将它们组合成一个新的 GIMP XCF 图像中的各个层。我需要多次执行此任务,因此最好使用基于脚本的解决方案。

到目前为止,我尝试使用 GIMP 的批处理模式,但失败了。

4

1 回答 1

4

我建议不要使用使用 Scheme 的 script-fu,而是使用 GIMP-Python 绑定,因为它更容易操作文件和列表。

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

有一个 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)
于 2014-07-08T13:28:12.647 回答