Python-fu/gimpfu 参数 - "image" 是什么意思?

Python-fu/gimpfu parameters - What does "image" mean?

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

pdb.gimp_image_get_layers(image)

Here's a picture of the interpreter.

您传递一个图像对象 - 大多数在 script-fu 中只是整数的参数都不会被使用——取而代之的是,您必须传递一个实际的对象引用。你是怎么得到这些的?

所有 PDB 函数和方法 return 这些对象已经存在 - 而不是它们的数字 ID,就像它发生在 script-fu 中一样。

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

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

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

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