Scripting GIMP Python fu导出文件仅导出透明层

Scripting GIMP Python fu导出文件仅导出透明层,scripting,gimp,save-image,python-fu,Scripting,Gimp,Save Image,Python Fu,我通过GIMP在python中保存图像时遇到问题。我可以获得图像并应用我想要的效果,但是当我去保存时,它只保存一层而不是所有的内容(注意:背景是透明的),而且因为背景是透明的,所以我不能让它保存除透明背景之外的任何内容。我使用的代码发布在下面: image_array = gimp.image_list() i=0 for image in image_array: img = image_array[i] layers = img.layers last_layer =

我通过GIMP在python中保存图像时遇到问题。我可以获得图像并应用我想要的效果,但是当我去保存时,它只保存一层而不是所有的内容(注意:背景是透明的),而且因为背景是透明的,所以我不能让它保存除透明背景之外的任何内容。我使用的代码发布在下面:

image_array = gimp.image_list()
i=0
for image in image_array:
    img = image_array[i]
    layers = img.layers
    last_layer = len(layers)-1
    try:
        disable=pdb.gimp_image_undo_disable(img)
        pdb.gimp_layer_add_alpha(layers[0])
        drw = pdb.gimp_image_active_drawable(img)
        pdb.plug_in_colortoalpha(img,drw,(0,0,0))
        drw = pdb.gimp_image_active_drawable(img)
        enable = pdb.gimp_image_undo_enable(img)

    except:
        print "ERROR"

    pdb.file_png_save(img, drw, "C:\\Users\\jammer\\Desktop\\test.png",
                      "test.png",0,9,1,1,1,1,1)
    i+=1

我也尝试过
file\u png\u save2
,但我觉得问题在于drw对象,因为我只想复制单击文件->导出并保存为png的选项,而不需要通过GUI执行此操作。我宁愿它自动保存(我有49个图像,每个都会自动命名,但首先我需要让它正确地导出一个图像)。正如我之前所说,上面的代码只导出透明的背景,即使更改为GIF也不能解决问题。如何将文件导出为PNG,同时保持所有图层和透明背景?

我发现了问题!我没有合并可见层,并将其设置为新层,然后将其作为“可绘制对象”保存为png时使用!我已在下面发布了固定代码:

image_array = gimp.image_list()
i=0
for image in image_array:
    img = image_array[i]
    layers = img.layers
    last_layer = len(layers)-1
    try:
        disable=pdb.gimp_image_undo_disable(img)
        pdb.gimp_layer_add_alpha(layers[0])
        drw = pdb.gimp_image_active_drawable(img)
        pdb.plug_in_colortoalpha(img,drw,(0,0,0))
        layer = pdb.gimp_image_merge_visible_layers(img, gimpfu.CLIP_TO_IMAGE)#FIXES PROBLEM OF ONLY EXPORTING TRANSPARENCY!
        enable = pdb.gimp_image_undo_enable(img)

    except:
        print "ERROR"

    pdb.file_png_save2(img, layer, "C:\\Users\\jammer\\Desktop\\test.png","test.png",1,9,1,1,1,1,1,0,1)
    i+=1

合并所有层是一种方法——但您只希望在像您这样的情况下,图像是“一次性的”——合并层后,不会返回(GIMP中没有“撤消”的调用)。通常的方法是调用
pdb.gimp\u image\u duplicate
,并在副本中执行层合并。