使用透明边框保存 PNG

问题描述

刚开始使用 Gimp 中的 python-fu。我正在尝试在 python 中模拟我可以在 UI 中执行的操作:

  1. 创建一个图片,比如 1000 像素宽、500 像素高、透明填充。
  2. 打开为“file1.png”图层,宽 800 像素,高 500 像素 - 这会在图层的两侧留下 100 像素的透明度,这正是我想要的
  3. 导出为“file2.png” - 给我一个 1000 像素 x 500 像素的 PNG,中间是 800 像素的图像,两边都是 100 像素的透明度 - 完美。

这是我所拥有的:

img=pdb.gimp_image_new(1000,500,0)
lyr=pdb.gimp_file_load_layer(img,'C:\temp/file1.png')
pdb.gimp_image_insert_layer(img,lyr,None,0)
#here's where I'm lost... how do I save as png with the transparent border? The following saves just as 800px wide,and loses the 100px transparency on either side...
drw=pdb.gimp_image_active_drawable(img)
pdb.file_png_save2(img,drw,'C:\temp/file2.png',9,1,1)

感谢收到任何帮助! :)

解决方法

我找到了一个解决方案,通过创建一个 1000px * 500px 的单独透明背景 png,将其添加为一个额外的图层,然后合并两个图层,剪裁到图像大小:

img=pdb.gimp_image_new(1000,500,0)
lyr=pdb.gimp_file_load_layer(img,'C:\temp/file1.png')
pdb.gimp_image_insert_layer(img,lyr,None,0)
lyr2=pdb.gimp_file_load_layer(img,'C:\temp/bg.png')
pdb.gimp_image_insert_layer(img,lyr2,0)
pdb.gimp_image_merge_visible_layers(img,CLIP_TO_IMAGE)
drw=pdb.gimp_image_active_drawable(img)
pdb.file_png_save2(img,drw,'C:\temp/file2.png',9,1,1)