GIMP Python的复出口文件只出口透明层(GIMP Python-fu exporting f

2019-08-17 16:58发布

我有通过GIMP节省蟒蛇图像的问题。 我能得到的图像,并对其我想要的效果,但是当我去救人,这不仅节省了一层,而不是一切(注:背景是透明的),也因为背景是透明的,我不能让它保存任何东西,除了的透明背景。 我使用的代码贴在下面:

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_png_save2 ,但我有一种感觉,问题就出在DRW对象我只是想复制点击文件- >导出并保存为PNG没有这样做,通过图形用户界面的选项。 我宁愿把它自动保存(我有49个图像,并且每个将被自动命名,但首先我需要得到它的一个正确的图像输出)。 正如我以前说过,只有上面的代码输出一个透明的背景,甚至改变为GIF不能解决问题。 如何将文件导出为PNG,同时保持所有层和透明的背景是什么?

Answer 1:

我发现我的问题! 我没有合并可见层以及设置等于新层,保存图像为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 Python-fu exporting file only exports transparent layer