我在通过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对象,因为我只想复制单击File->Export并将其保存为PNG的选项,而无需通过GUI进行保存。我宁愿让它自动保存(我有49个图像,每个图像都会自动命名,但是首先我需要让它正确地导出一个图像)。正如我前面所说的,上面的代码只导出透明的背景,甚至更改为GIF也不能解决这个问题。如何将文件导出为PNG,同时保持所有层和透明背景?
发布于 2013-03-19 00:07:40
我发现了我的问题!我没有合并可见层并设置等于新层的设置,然后在将图像保存为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+=1https://stackoverflow.com/questions/15482280
复制相似问题