我有几个 PNG 图像,我需要将它们组合成一个新的 GIMP XCF 图像中的各个层。我需要多次执行此任务,因此最好使用基于脚本的解决方案。
到目前为止,我尝试使用 GIMP 的批处理模式,但失败了。
我建议不要使用使用 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)