我在通过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_png_save2
,但我觉得问题出在drw对象上,因为我只想复制点击文件 - >导出并保存为PNG没有通过GUI做到这一点。我宁愿让它自动保存(我有49个图像,每个都会自动命名,但首先我需要让它正确导出一个图像)。正如我之前所说,上面的代码只导出透明背景,即使更改为GIF也无法解决问题。如何在保留所有图层和透明背景的同时将文件导出为PNG?
答案 0 :(得分:3)
我发现了我的问题!我没有合并可见图层并将其设置为等于新图层,然后我将图像保存为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