如何在一个XCF图像中将多个PNG图像组合为图层?

时间:2014-07-08 08:03:31

标签: png gimp gimpfu xcf

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

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

1 个答案:

答案 0 :(得分:3)

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

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

有一个API调用“将文件作为图层加载” - pdb.gimp_file_load_layer -

但是,这会将图像带到内存中,但不要将其添加到图像中 - 您必须调用 之后pdb.gimp_image_insert_layer

您可以直接在交互式控制台中键入此内容,或者,检查我的其他GIMP相关答案之一,或者在Web上使用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允许的任何方式创建文件列表。 例如,要获取所有“.png”文件名 c:\Documents and Settings\My user\Pictures文件夹,你可以这样做:

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)