将图层从一张图像复制到另一张
我正在用Python开发一个Gimp插件。我想把一个图层加载到内存中,这个图层是基于一个文件的,然后把它添加到多个图片中(这样就可以避免每次都从文件加载的时间)。
我在文档里找不到相关的内容:所有的功能都是把图层添加到特定的图片里(所以我每次都得从文件加载,这正是我想避免的)。
有没有什么解决办法呢?
我想到的一个办法是把图层加载到一个“模板图片”里,然后再复制到其他图片上。问题是我找不到可以把图层从一张图片复制到另一张图片的函数。
1 个回答
4
我觉得最简单的方法就是通过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)
另外补充一下——自从GIMP 2.6版本以来,有一个创建新图层的快捷方式,听说在源代码之外没有文档说明,就是在图像对象上使用new_layer
这个方法。
如果不带参数调用它,会创建一个与图像大小相同的透明新图层。这个快捷方式非常方便,因为通过“PDB方式”创建图层需要先创建图层,还要填很多必填参数,然后再调用一次把它添加到图像中。