Вы передаете объект изображения - Большинство параметров, которые являются только целые числа в скрипт-фу не должны быть использованы - на их месте, вы должны передать фактическую ссылку на объект. И как вы их получите?
Просто все функции и методы PDB возвращают эти объекты уже - не их числовые идентификаторы, как это происходит в script-fu.
Итак, для изображения вы либо получаете параметр Image как параметр для своей функции python-fu, либо по вызову pdb.gimp_image_new.
Если, как это часто бывает, вы проводите тесты на интерактивной консоли, вам нужно получить ссылки на активные изображения. В этом случае позвоните по телефону gimp.image_list()
, чтобы получить список Python с открытыми в настоящее время изображениями - изображение с индексом 0 в этом списке является самым правым (самым новым) открытым изображением на экране. Просто сделайте image = gimp.image_list()[0]
, чтобы получить ссылку на него.
Пока вы на нем, исследуйте объект изображения с помощью dir(image)
, вы увидите, что он заполнен атрибутами и методами, которые являются удобными ярлыками для других жестких вызовов pdb. Например, image.layers
дает вам список Python со ссылкой на все слои изображения (в качестве реальных объектов слоя, а не их идентификаторы), image.width
дает вам ширину, а вызов img.new_layer()
создает новый слой и добавляет его в изображение - этот вызов имеет необязательные параметры для указания его имени, ширины, высоты и т. д.
В качестве последнего средства существуют зарезервированные методы для модуля gimp
, который может преобразовывать числовой идентификатор в фактические объекты: '_id2display', '_id2drawable', '_id2image', '_id2vectors'
- вам не нужно использовать их. Если вы когда-либо находите, что вам нужно использовать те, что находятся в теле сценария, из-за того, что некоторые функции pdb возвращают идентификаторы вместо объектов, пожалуйста, заполните отчет об ошибке в bugzilla GIMP.