将图层从一张图像复制到另一张

3 投票
1 回答
3399 浏览
提问于 2025-04-17 07:19

我正在用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方式”创建图层需要先创建图层,还要填很多必填参数,然后再调用一次把它添加到图像中。

撰写回答