我有几张PNG图片,需要将它们作为单独的图层合并到新的GIMP XCF图像中。我需要多次执行此任务,因此最好使用基于脚本的解决方案。
到目前为止,我尝试过在GIMP的批处理模式下进行操作,但是失败了。
到目前为止,我尝试过在GIMP的批处理模式下进行操作,但是失败了。
我建议在处理这个问题时不要使用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)