5

我一直在尝试从 script-fu 切换到 python-fu,但我无法弄清楚我应该为“image”参数传递什么。在 script-fu 中它只是一个整数,但是当我将相同的整数放入 python-fu 时,它只是说它是错误的类型。与字符串和浮点数相同......我应该在这里放什么?文档只是说它采用的参数是“IMAGE”,但这是什么意思?我在哪里可以找到它?我如何得到它?

pdb.gimp_image_get_layers(image)

这是口译员的照片。

4

1 回答 1

10

您传递一个 Image 对象 - 大多数在 script-fu 中只是整数的参数都不会被使用 - 在它们的位置,您必须传递一个实际的对象引用。你如何得到这些?

简单地说,所有 PDB 函数和方法都已经返回这些对象 - 而不是它们的数字 ID,就像它在 script-fu 中发生的那样。

因此,对于 Image,您可以获取 Image 作为 python-fu 函数的参数,或者调用 pdb.gimp_image_new。

如果您经常在交互式控制台上进行测试,那么您必须获取对活动图像的引用。在这种情况下,调用 gimp.image_list()以获取包含当前打开图像的 Python 列表 - 此列表中索引 0 处的图像是屏幕上最右侧(最新)的打开图像 - 所以只需image = gimp.image_list()[0]获取对它的引用即可。

当您使用它时,与dir(image)您一起探索图像对象会发现它填充了属性和方法,这些属性和方法是其他难以键入的 pdb 调用的便捷快捷方式。例如,image.layers为您提供一个引用图像上所有图层的 Python 列表(作为实际的图层对象,而不是它们的 ID),image.width为您提供宽度,然后调用img.new_layer()创建一个新图层并将其添加到图像中 - 此调用具有可选参数指定其名称、宽度、高度等。

作为最后的手段,gimp模块上有一些保留方法可以将数字 ID 转换为实际对象:'_id2display', '_id2drawable', '_id2image', '_id2vectors'- 您不需要使用这些方法。如果您发现自己需要在脚本主体中使用它们,由于某些 pdb 函数返回 ID 而不是对象,请填写 GIMP 的 bugzilla 上的错误报告。

于 2016-02-03T14:04:03.837 回答