## Глава 13. Создание сценариев и расширений

## 1. Расширения

### 1.1. Введение

Одна из наилучших вещей в GIMP — это возможность легко расширить его функциональность с помощью использования расширений. Расширения GIMP являются внешними программами, которые запускаются под контролем основной программы и очень тесно с ней взаимодействуют. Расширения могут обрабатывать изображения почти любыми методами, так же как пользователи. Их преимущество заключается в том, что намного легче добавить к GIMP возможность с помощью написания небольшого расширения, чем изменения большой массы сложного кода, который составляет ядро GIMP. Множество ценных расширений, написанных на C, содержат всего около 100-200 строк исходного кода.

Несколько десятков расширений включены в основную поставку GIMP и устанавливаются автоматически вместе с программой. Большинство из них может быть доступно через меню Фильтры (фактически всё, что доступно в этом меню, является расширениями), но некоторое количество расположено в других меню. В большинстве случаев вы можете его использовать без какого-либо представления о том, что это расширение: к примеру, функция автоматической цветокоррекции «Нормализовать» в действительности является расширением, хотя по тому, как она работает, этого не скажешь. Даже импорт и экспорт изображений выполняются расширениями.

Каждый может написать расширение для GIMP и сделать его доступным онлайн. Есть много полезных расширений, которые можно получить таким образом. Некоторые из них описаны в других разделах руководства пользователя.

Вместе с этой свободой появляется определённая степень риска: тот факт, что любой может создать расширение означает, что не существует эффективного контроля качества. Все поставляемые вместе с GIMP расширения были протестированы и настроены разработчиками, но многие скачанные вами были написаны за пару часов и заброшены. Некоторые создатели расширений просто не заботятся о стабильности, и даже у тех, кто в этом заинтересован, возможности тестирования на различных системах в разных ситуациях часто весьма ограничены. По сути, загружая расширение, вы получаете что-что бесплатно, а иногда вы получаете именно то, за что платите. Это сказано не для того, чтобы отговорить вас, а для того, чтобы вы поняли, что не все расширения, доступные в Интернете, дадут то, что вы от них ожидаете.

| Предупреждение
Расширения, являясь полноценными исполняемыми программами, могут делать всё то же самое, что и любая другая программа. В том числе устанавливать «чёрные ходы» в вашу систему или иным образом нарушать её безопасность. Не устанавливайте расширение, если оно не получено из надёжного источника.

| Примечание
GIMP 3.0 пришлось изменить API расширений во многих местах. В связи с этим расширения, написанные для старых версий, нуждаются в обновлении и без изменений работать не будут.

### 1.2. Использование расширений

В большинстве случаев вы можете использовать расширение так же, как и любой другой инструмент GIMP, не осознавая, что это расширение. Однако при использовании расширения есть несколько моментов, которые полезно понимать.

Один из них состоит в том, что расширения обычно не так устойчивы как ядро GIMP. Когда в GIMP происходит сбой, это считается очень серьёзным обстоятельством: пользователю это может принести множество неприятностей и головную боль. Когда в расширении происходит сбой, то обычно последствия не столь серьёзны. В большинстве случаев вы можете просто продолжать работать, не беспокоясь по этому поводу.

| Примечание
Поскольку расширения представляют собой отдельные программы, они взаимодействуют с GIMP особым образом: разработчики GIMP называют его «разговор по проводу». Когда в расширении происходит сбой, связь прерывается, и вы увидите сообщение об ошибке «wire read error».

| Подсказка
Когда в расширении происходит сбой, GIMP выдаёт зловеще выглядящее сообщение о том, что расширение, возможно, оставило GIMP в повреждённом состоянии и вам следует сохранить свои изображения и выйти из программы. Строго говоря, это вполне корректно, поскольку расширения способны изменить почти всё в GIMP, но для практических целей, как показывает опыт, повреждение на самом деле довольно редкое явление, и многие пользователи просто продолжают работать и не беспокоятся об этом. Советуем просто подумать о возможных проблемах, если что-то пойдёт не так, и взвесить все за и против.

Из-за способа взаимодействия расширений с GIMP, они не имеют никакого механизма для получения информации об изменениях, которые вы вносите в изображения после запуска расширения. Если вы запустите расширение, а затем с помощью какого-либо другого инструмента измените изображение, расширение может аварийно завершить работу, но даже если этого не произойдёт, результат может оказаться искажённым. Не следует запускать для изображения более одного расширения одновременно и выполнять операции над изображением до тех пор, пока расширение не закончит работу с ним. Если вы проигнорируете этот совет, вы можете испортить не только изображение, но также и механизм истории действий, следовательно, у вас не будет возможности исправить вашу ошибку.

### 1.3. Установка новых расширений

Расширения, которые распространяются вместе с GIMP, не требуют установки. Расширения, которые вы загружаете самостоятельно, требуют установки. Обычно по умолчанию располагаются в каталоге пользователя GIMP в папке `/plug-ins`, причём имя папки должно совпадать с именем файла расширения. Вы можете узнать, где по умолчанию GIMP ищет расширения в настройках папок данных. Там же вы можете добавить новые места, где GIMP должен искать расширения. Существует несколько сценариев, в зависимости от того, какую ОС вы используете, и какова структура расширения.

#### 1.3.1. Linux и Unix-подобные системы

Большинство расширений делятся на две категории: небольшие, чей исходный код распространяется в одном файле с расширением .c, и большие, чей исходный код распространяется в каталоге, содержащем многочисленные файлы, включая `Makefile`.

Для простого однофайлового расширения, назовём его `borker.c`, установка представляет собой просто запуск команды gimptool-3.2 --install borker.c. Эта команда компилирует расширение и устанавливает его в ваш каталог расширений, `~/gimp-3.2/plug-ins`, если вы его не изменили. Это приведёт к его автоматической загрузке при следующем запуске GIMP. Для того, чтобы выполнить эти действия, вам не требуются права администратора. Если расширение не удалось скомпилировать, проявите изобретательность.

#### 1.3.2. Windows

Большинство расширений GIMP, доступных для Windows, поставляются либо в виде установщика, либо могут быть загружены в предварительно скомпилированном двоичном формате, готовом для копирования в выбранную вами папку, которая будет распознана GIMP.

Если имеется программа установки, она сделает за вас всю работу по выбору подходящей папки и копированию всех необходимых файлов. Если нет, вам, возможно, придётся проверить в настройках папок GIMP, куда следует скопировать расширения. Помните, что каждое расширение должно находиться в собственной папке с тем же именем, что и у расширения.

#### 1.3.3. Apple Mac OS X

Способ установки расширений на OS X в основном зависит от того, как вы устанавливали сам GIMP. Если вы установили GIMP через один из менеджеров пакетов, таких как fink [FINK] или darwinports [DARWINPORTS], то установка расширений работает точно так же, как это уже описано для Linux. Единственное отличие заключается в том, что пара расширений может быть даже доступна в репозитории вашего менеджера пакетов, так что попробуйте установить оттуда.

С другой стороны, если вы предпочитаете готовый пакет GIMP, например GIMP.app, то, скорее всего, вам нужно и готовое расширение. Вы можете попытаться получить готовый вариант интересующего вас расширения у его автора. Сборка собственных двоичных файлов предполагает установку GIMP.

#### 1.3.4. Запуск установленного расширения

Как только вы установили расширение, возникает вопрос: как его активировать? Расположение в меню определяется самим расширением, поэтому ответ на этот вопрос вам нужно либо посмотреть в документации к расширению (если таковая имеется), либо изучить меню, либо воспользоваться функцией поиска команд в GIMP, нажав клавишу / и введя название расширения. Если вы умеете читать исходный код, вы также можете проверить его, чтобы узнать, в каком меню оно зарегистрировано.

Для более сложных расширений, организованных как каталог с несколькими файлами, внутри обычно есть файл под названием `INSTALL` или `README`, содержащий инструкции. Если такого файла нет, то лучшим советом будет удалить расширение в корзину и потратить время на что-либо другое: любой код, написанный с такой малой заботой о пользователе, скорее всего, будет разочаровывать бесчисленными способами.

Если вы установите в ваш личный каталог расширений расширение с тем же именем, что и в системном каталоге, загружено будет только одно, и это будет то, которое находится в вашем домашнем каталоге. Вы будете получать сообщения об этом при каждом запуске GIMP. Такой ситуации лучше избегать.

### 1.4. Написание расширений

Если вы желаете научиться написанию расширений, вы можете найти исчерпывающую помощь на веб-сайте разработчиков GIMP[GIMP-DEV-PLUGIN]. GIMP — это сложная программа, но команда разработчиков приложила усилия для сглаживания трудностей обучения написанию расширений: доступны хорошие инструкции и примеры, и основная библиотека, используемая для взаимодействия с GIMP (именуемая «libgimp»), имеет хорошо документированный API. Хорошие программисты, обучаясь с помощью изменения существующих расширений, часто способны осуществить интересные вещи всего лишь после пары дней работы.

3. Изменить заставку |  | 2. Использование сценариев Script-Fu

Report a bug in GIMP Сообщите об ошибке в нашем баг-трекере