我正在python中构建一个Gimp插件。我想在内存中加载一个基于文件的图层,然后将其添加到多个图像中(从而避免从文件加载时间)。
我在文档中找不到任何内容:所有函数都将图层添加到特定图像中(因此我每次都必须从文件加载,这是我要避免的)。
有解决方法吗?
我想到的一个解决方案是将图层加载到“模板图像”中,然后将其复制到其他图像。问题是我找不到将图层从一个图像复制到另一个图像的功能。
答案 0 :(得分:2)
我认为最简单的方法是通过PDB使用“复制”和“粘贴” -
pdb.gimp_edit_copy (original_layer)
floating = pdb.gimp_edit_paste (target_layer)
(其中目标图层是另一图像上的图层)。
这就像交互式地做同样的事情一样,创造了一个“浮动选择”。 要使浮动选择覆盖目标图层的内容,请执行:
pdb.gimp_floating_sel_anchor(float)
或者将其提升为包含粘贴内容的新图层:
pdb.gimp_floating_sel_to_layer(float)
作为一个附加说明 - sinc GIMP 2.6,有一个在图像上创建新图层的快捷方式,在源代码之外没有记录AFAIK - 图像对象上的方法new_layer
。
在没有参数的情况下调用它会创建一个与图像大小相同的新透明层。这个快捷方式相当方便,因为创建图层的“pdb方式”是创建它的frits,有许多必需参数,然后是另一个将它添加到图像的调用。