2016-02-02 7 views
0

Я пытался переключиться с скрипта-fu на python-fu, и я не могу понять, что я должен передать для параметра «изображение». В script-fu это было просто целое число, но когда я помещал одно и то же целое число в python-fu, он просто говорит, что это неправильный тип. То же самое со строками и поплавками ... что я должен здесь положить? В документации только говорится, что параметр, который он принимает, - «ИЗОБРАЖЕНИЕ», но что это значит? Где я его найду? Как мне это получить?Параметры Python-fu/gimpfu - Что означает «образ»?

pdb.gimp_image_get_layers(image) 

Here's a picture of the interpreter.

ответ

3

Вы передаете объект изображения - Большинство параметров, которые являются только целые числа в скрипт-фу не должны быть использованы - на их месте, вы должны передать фактическую ссылку на объект. И как вы их получите?

Просто все функции и методы 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.