10 февраля 2013 г.

Автоматизация Gimp с помощью Python (17 Апр. 10)

Зачем автоматизировать?
В процессе работы с gimp часто требуется выполнять одни и те же действия.
Например что бы создать заготовку для кнопки :
  • Создать слой
  • Выделить область
  • Залить градиентом
  • Уменьшить выделение
  • Залить градиентом
  • Добавить эффектов
Когда таких действий много, они начинают отнимать много времени.
Эта работа превращаеться в только механическую – она не доставляет удовольствия.
Как быть? Надо автоматизировать!

Как вообще автоматизировать работу в GIMP?

Тогда я начал поиск вариантов.
Первое что я нашёл : script-fu.
Штатный способ написания скриптов для Gimp на Scheme.
Проблемы: Я не знаком со Scheme
Второе : GIMP Python.
Плюсы: Python!; Минусы: Не очень ясно из документации как это работает.
(Еще поподался мануал для Ruby, но для меня Python вкуснее)

Как автоматизируют GIMP с помощью GIMP Python?

Документация обновлялась давно : 16-May-2006.
Возможно и действительности она уже не соответствует.
Значит буду искать примеры на стороне.
Я отправился на сайт с плагинами для Gimp: http://registry.gimp.org/ и выбрал там тэг Python.
Сайт, кстати, очень хороший. Рекомендую ;)
Нашёл на нём plugin с простым кодом : Facial Symmetry.
Работает и соответствует доке по GIMP Python.

Пишем hello world

Стандартная заготовка будет примерно такая:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from gimpfu import *

def python_PLUGINNAME(image, drawable):
    print "Hello world"

register(
    "python_PLUGINNAME",
    "Short description",                # Описание
    "Long description",                 # Описание
    "Author",                           # Автор
    "Author",                           # Автор
    "Year",                             # Год
    "<Image>/MyEffects/MenuItemName",   # Пункт меню
    "*",                                # Тип изображения
    [],                                 # Входные параметры
    [],
    python_PLUGINNAME)

main()
Что бы увидеть “Hello world” запускаем GIMP из под консоли.
Это помогает с отладкой.
Внутрь нашей функции пишем код.
Как создать слой или картинку понятно из доков.
А вот какие бывают вызовы у pdb?
Открываем : Справка -> Просмотрщик процедур
Как видно из скриншота процедур там много :)
Алгоритм такой :
  • Находим процедуру, например plug-in-sharpen
  • Меняем в названии минус на подчёркивание и добавляем pdb., так pdb.plug_in_sharpen
  • Читаем что передавать в параметрах и передаём
В остальном полагаемся на доки и примеры
P.S: Рекомендую плагин : Layer Effects

Источник: kabakov.wordpress.com
Related Posts Plugin for WordPress, Blogger...