Введение. Что такое GIMP и зачем он нужен

21.04.2019

Графический редактор GIMP написан на языке C. Для построения пользовательского интерфейса программа использует библиотеки GTK+ и Cairo.

В современной версии GIMP интерфейс полностью отделён от внутренней логики, а обработка изображений выполняется через библиотеку GEGL, использующую ациклические графы. Для конвертирования пикселов между форматами представления применяется библиотека-словарь babl.

Для начинающих разработчиков есть несколько справочных ресурсов:

  • справка по компилированию ;
  • информация о ;
  • справка по созданию файлов патчей .

Устаревшая справка по API доступна по адресу developer.gimp.org .

Если вы заинтересованы в портировании фильтров GIMP на GEGL, вам помогут эти страницы:

  • справка по порту фильтров на GEGL и статус порта;
  • статус порта на GEGL и GIO плагинов, обеспечивающих поддержку различных форматов данных.

Самые актуальные задачи

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

  • порт фильтров GIMP на GEGL;
  • ускорение работы GEGL;
  • порт операций GEGL на OpenCL;
  • разработка нового внутреннего формата файлов.

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

Работа над эргономикой

С 2006 года эргономикой GIMP занимается Петер Сиккинг, руководитель немецкой компании man+machine works. Работа над юзабилити документируется в отдельной англоязычной вики .

Актуальные проекты:

  • интерфейс параметров инструментов (более компактные виджеты);

Кроме того, студенты Петера провели несколько исследований, на основе которых тоже можно доработать интерфейс GIMP:

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

Работа с командой

Основным каналом общения разработчиков является IRC: #gimp на irc.gimp.net. Существенная доля программистов живёт в Европе, однако есть активные участники из США и Новой Зеландии, поэтому просим с пониманием отнестись к тому, что получить ответ можно не сразу.

  • GIMP developer , предназначен для обсуждения разработки GIMP.
  • GEGL developer , в нём обсуждается разработка библиотек GEGL и babl.

Аннотация: GIMP (или The GIMP) - пакет для создания и редактирования растровых изображений (растровый графический редактор), разрабатываемый сообществом разработчиков по технологии разработки с открытым исходным кодом (Open Source) и распространяемый на условиях свободной лицензии GNU (GNU Public License - GPL). GIMP прекрасно подходит для любительской и полупрофессиональной работы с изображениями: обработки фотографий, создания графических композиций и коллажей, создания элементов дизайна web-страниц. Возможности GIMP позволяют обойтись без дорогостоящих коммерческих пакетов растровой графики или их пиратских версий, что особенно актуально в связи с ужесточением защиты авторских прав в России.

1.1 О проекте

Проект GIMP был рождён в 1995 году в университете Беркли (Калифорния). Благодаря открытой системе разработки и актуальности самой задачи создания и развития мощного открытого пакета растровой графики проект очень динамично развивался и развивается до сих пор. Первоначально для графического интерфейса пакета использовалась графическая библиотека Motif , но затем была разработана новая библиотека - GTK (GIMP ToolKit), которая в дальнейшем стала одной из основных свободно распространяемых библиотек для графических интерфейсов (сейчас используется GTK2+).

Важнейшими отличительными особенностями GIMP являются, во-первых, свободная модель разработки и распространения (поэтому проект развивался более 10 лет и будет развиваться и впредь, и новейшие версии общедоступны), во-вторых, кроссплатформенность (GIMP реализован для всех вариантов Linux, всех веток BSD-систем, для MacOS и для MS Windows ), в-третьих, гибкость и расширяемость (имеется как встроенный язык для создания расширений, так и возможности развивать функциональность пакета на языке Python ).

1.2 Версии, лицензии, информационные ресурсы

Начиная с версии 2.0, принят следующий принцип именования версий: если вторая цифра чётная (2.0, 2.4, 2.6. . .), то версия является стабильной и предназначена для массового использования, а если вторая цифра нечётная (2.1, 2.3, 2.5. . .), то это означает, что версия находится в активной разработке и предназначена главным образом для разработчиков и добровольцев-тестеров.

На момент написания этих строк актуальной является версия GIMP 2.4 (модификации 2.4.3 или 2.4.5). Отличия между версиями с различающейся третьей цифрой практически незаметны для пользователей и связаны с оптимизацией внутреннего устройства пакета.

Как уже упоминалось выше, GIMP распространяется по свободной лицензии GPL . Это означает, что он является практически бесплатным (за исключением затрат на время и труд по переписыванию пакета на цифровой носитель или на оплату трафика в случае загрузки из Интернета). GIMP включается практически во все дистрибутивы Linux и может быть установлен в других операционных системах (см. п. 1.1).

Основным сайтом проекта является www.gimp.org , откуда можно скачать актуальные версии пакета для различных операционных систем.

На сайте docs.gimp.org размещена оригинальная ("официальная") документация по пакету - "Руководство пользователя GIMP", созданная самими разработчиками. Эта документация доступна на разных языках, в том числе и на русском, а в случае неясностей всегда можно использовать оригинальный английский вариант.

Несколько статей, касающихся решения отдельных задач при работе в GIMP, имеется на сайте www.linuxgraphics.ru , а на сайте www.progimp.ru собрана большая коллекция материалов, в том числе уроки и галерея примеров произведений, созданных с помощью GIMP.

Следует также упомянуть пакет программ "Свободный офис ", издаваемых компанией "Альт Линукс", в документацию к которому включена брошюра Анатолия Якушина "The GIMP. Редактирование изображений", послужившая одним из толчков к созданию этой книги.

В нескольких номерах журнала LinuxFormat (LXF) публиковался переводной "Учебник GIMP" (LXF 1(70)/2005, стр. 78–81; LXF 2(71)/2005, стр. 80–83; LXF 3(72)/2005, стр. 84–87; LXF 4(73)/2005, стр. 64–67; LXF 2(76)/2006, стр. 78–85; LXF 3(77)/2006, стр. 72–75; LXF 4(78)/2006, стр. 80–83), а обзор особенностей версии GIMP 2.4 и нововведений в GIMP 2.6 можно найти в LinuxFormat 4(91)/2007, стр. 48–54.

1.3 Об этой книге

Эта книга является первым отдельным печатным изданием про GIMP на русском языке. Она не является переводом оригинального "Руководства пользователя" и не является полным и всеохватывающим учебником. Здесь рассмотрены примеры задач, с которыми приходилось сталкиваться автору или которые были ему интересны.

Лекция 5. Графический редактор GIMP.

Общие сведения. История появления и развития. Возможности и функции. Написание плагинов и расширений. Основные принципы работы.

Общие сведения.

GIMP - растровый редактор, свободно распространяемый, с открытым исходным кодом.

Это многоплатформенное программное обеспечение для работы над изображениями. GIMP является акронимом, означающим GNU Image Manipulation Program. Редактор GIMP пригоден для решения множества задач по изменению изображений, включая ретушь фотографий, объединение и создание изображений.

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

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

Одной из сильных сторон GIMP является его доступность из многих источников для многих операционных систем. GIMP входит в состав большинства дистрибутивов GNU/Linux. GIMP также доступен и для других операционных систем вроде Microsoft Windows™ или Mac OS X™ от Apple (Darwin). GIMP - свободное программное обеспечение, выпускаемое под лицензией GPL(General Public License). GPL предоставляет пользователям право доступа к исходному коду программ и право изменять его.

История появления и развития.

История возникновения и развития GIMP начинается с 1995 года. Инициаторами и первыми создателями были два студента из Беркли ‒ Спенсер Кимбелл и Питер Маттис.Их целью было написать аналог программы Photoshop, который обладал бы ее возможностями, но был бы доступным бесплатно. В 1996 году был выпущен первый релиз. Первая же версия стала свободной и распространялась под лицензией GPL. Уже тогда GIMP поддерживал плагины для того, чтобы постоянно не переписывать внутренний код фоторедактора. Первая версия имела лишь основные инструменты для работы с изображениями, но её отличительной особенностью стала возможность работы с цветовыми каналами. Несмотря на недостатки программы, она имела успех ‒ поддержка сообществ, создавались уроки и обучающие материалы, писалась документация.

В 1997 году был выпущен GIMP 0.99. GTK и GDK были значительно доработаны и объединены, а то, что получилось в итоге, получило название Gtk+. Написание и выпуск GTK стал очень важным шагом не только в развитии GIMP, но и других программ с открытым исходным кодом. Последующие релизы этой серии публиковались быстро, между ними не было больших задержек. Спенсеру и Питеру удалось выпустить GIMP 0.99.10 и новый Gtk+ к 9 июня 1997 года. Это был их последний релиз. Все последующие версии разрабатывались и поддерживались другими командами разработчиков.

Возможности и функции.

    Полный набор инструментов, включая кисти, карандаш, распылитель, штамп и т.д.

    Разумное использование памяти, при котором размер изображения ограничен только свободным местом на жёстком диске.

    Субпиксельная дискретизация для всех инструментов рисования, дающая высококачественное сглаживание.

    Полная поддержка альфа-канала для работы с прозрачностью.

    Слои и каналы.

    Процедурная база данных для вызова внутренних функций GIMP из внешних приложений, таких как «Script-Fu»

    Продвинутые возможности по созданию сценариев.

    Многократные отмена и повтор действий, ограниченные лишь свободным пространством на жёстком диске.

    Инструменты преобразования, включая вращение, масштабирование, искривление и отражение.

    Поддерживаемые форматы файлов включают GIF, JPEG, PNG, XPM, TIFF, TGA, MPEG, PS, PDF, PCX, BMP и многие другие.

    Инструменты выделения, включая прямоугольное, эллиптическое и свободное выделение, «волшебную палочку», кривые Безье и «умное» выделение

    Дополнения, позволяющие легко добавлять поддержку новых форматов и фильтров.

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

Структура GIMP представляет собой набор модулей, взаимосвязанных друг с другом. Модули можно добавлять и изменять.

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

Сами по себе, модули ничего не могут обработать. Ядро программы - графическая библиотека GEGL. Она содержит функции, реализующие обработку изображений. В основе библиотеки ‒ алгоритмы и вся математика. Расширяемость программы реализована также внутри ядра.

GUI (Graphical user interface) в GIMP реализован с помощью библиотеки Gtk+. Она отвечает за то, как программная часть редактора взаимодействует с пользователем. Именно Gtk+ задает внешний вид всех окон, кнопок и других элементов интерфейса. Gtk+ поддерживает различные темы оформления.

Написание плагинов и расширений

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

Плагин ‒ внешняя программа, запускаемая под контролем основной и тесно с ней взаимодействующая.

Скрипт ‒ вариант плагина, являющийся интерпретируемой программой.

Идеология ‒ лучше создать плагин, реализующий какую-либо возможность по обработке изображения, чем изменять код ядра программы.

Языки программирования, на которых можно создавать дополнения для GIMP:

    Си - язык на котором написан GIMP. Был создан для использования в ОС UNIX, но потом был портирован и на другие операционные системы.

    TinyScheme (Script-Fu) - урезанный вариант языка Scheme. Достаточно простой и распространенный язык программирования.

    Python - язык программирования общего назначения с акцентом на легкость разработки и читаемость кода.

    Ruby - язык программирования для быстрого и удобного объектно-ориентированного программирования.

    Perl - язык программирования общего назначения, созданный программистом Ларри Уоллом, лингвистом по образованию.

Основные принципы работы

Изображения

Изображение - основной объект, с которым работает GIMP. Под словом «изображение» подразумевается один файл вроде TIFF или JPEG. Можно мысленно приравнять изображение к окну с ним, но это будет не совсем правильно: можно открыть несколько окон с одним и тем же изображением. В то же время, нельзя открыть в одном окне более одного изображения, а также изображение без отображающего его окна.

Изображение в GIMP может быть достаточно сложным. Наиболее правильной аналогией будет не лист бумаги с картинкой, а, скорее, стопка листов, называемые «слои». В дополнение к стопке слоёв, изображение в GIMP может содержать маску выделения, набор каналов и набор контуров.

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

Слои

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

Разрешение

Цифровые изображения состоят из сетки квадратных элементов разного цвета, называемых точками (пиксели). У каждого изображения есть размер в точках, на пример 900 точек в ширину и 600 точек в высоту. Но у точек нет фиксированного физического размера. Чтобы настроить изображения для печати, мы используем значение, называемое разрешением, которое определено как соотношение между размером изображение в точках и его физического размера (обычно в дюймах) на бумаге. Большинство форматов могут сохранить это значение, выраженное в ppi (pixel per inch - точки на дюйм). При печати, значение разрешения определяет физический размер изображения на бумаге и, соответственно, физический размер точек. То же изображение 900 на 600 точек можно распечатать с размером 3 на 2 дюйма с едва заметными точками или на большом плакате с большими квадратными точками. Изображения, взятые из цифровых фотоаппаратов и мобильных устройств, обычно содержат значение разрешения. Оно обычно 72 или 96 точек на дюйм. Необходимо осознавать, что это значение произвольное и было выбрано по историческим причинам. Разрешение всегда можно изменить в GIMP, и это не меняет самих точек. Кроме того, при показе изображений в интернете, на мобильных устройствах, в телевизоре или компьютерной игре, разрешение не имеет смысла и игнорируется, и в этих случаях точка изображения соответствует точке экрана.

Каналы

Канал - один компонент цвета точки. Для цветных точек в GIMP эти компоненты обычно красный, зелёный, синий и иногда прозрачность (альфа). Для серого изображения компоненты обычно серый и альфа, а для индексированного цветного изображения они - индекс и альфа.

Весь прямоугольный массив одного из компонентов цвета для всех точек изображения тоже называется каналом. Эти цветовые каналы можно видеть в диалоге Каналы.

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

Каналы находят себе применение при работе с изображением, у которого надо изменить один цвет. Например, если требуется удалить эффект красных глаз у фотографии, то можно работать только с красным каналом.

Каналы можно рассматривать как маски, которые пропускают или блокируют цвет данного канала. Применяя фильтры над информацией канала, вы можете создавать в изображении разные и тонкие эффекты. Простой пример применения фильтра над цветовыми каналами - фильтр Микшер каналов filter.

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

Выделения

Часто при работе возникает необходимость изменить только часть изображения. Для этого существует механизм выделения областей. В каждом изображении можно создать выделенную область, которая, как правило, отображается в виде движущейся пунктирной линии (она также называется «муравьиной дорожкой»), которая отделяет выделенную область от невыделенной. На самом деле, выделение в GIMP несколько сложнее, чем просто разделение пикселов на выделенные и невыделенные. В действительности выделение представляет собой канал в градациях серого, т.е. каждая точка изображения может быть выделенной, частично выделенной и не выделенной вовсе. Пунктирная линия, которой отображается выделение, представляет собой контур при уровне выделения 50%. Вышеупомянутый канал в градациях серого вы всегда можете увидеть, включив отображение быстрой маски.

Научиться эффективной работе с GIMP ‒ значит овладеть искусством правильно выделять нужные области изображения. Поскольку работа с выделениями столь важна, в GIMP реализовано достаточно средств для этого: инструменты создания выделений, операции над выделениями, а также возможность переключения в режим быстрой маски, в котором с каналом выделения можно работать как с обычным цветовым каналом, т.е. «рисовать» выделение.

Отмена действий

Ошибки при редактировании изображений неизбежны, но почти всегда можно отменить свои действия: GIMP записывает «историю» действий, позволяя при необходимости вернуться на несколько шагов назад. Однако эта «история» занимает память, поэтому возможности отмены действий не безграничны. Некоторые действия используют очень мало памяти, поэтому можно выполнять десятки таких действий перед тем, как самое раннее из них будет удалено из истории; другие типы действий занимают много памяти. Объём памяти, используемой для истории действий, можно изменить, но как минимум два-три последних действия всегда можно отменить. Самое главное действие, которое невозможно отменить - закрытие изображения. Именно поэтому, GIMP просит подтвердить намерение закрыть изображение, изменения в котором ещё не сохранены.

Расширения

Большинство действий с изображением выполняется при помощи самой программы GIMP. Однако если возможностей редактора не хватает, вы есть возможность воспользоваться дополнениями, которые являются внешними программами, тесно интегрированными с GIMP и умеющими производить сложные операции над изображениями и другими объектами GIMP. В базовом комплекте GIMP есть множество дополнений. Кроме того, можно расширить этот набор самостоятельно, написав нужное дополнение или скачав его из сети. Фактически, написание дополнений (и сценариев) - самый простой способ добавить новые функции в GIMP для тех, кто не входит в основную команду разработчиков.

Все функции из меню Фильтры и многие функции из других меню программы реализованы в виде дополнений.

Сценарии

Помимо расширений, которые являются программами, написанными на языке C, GIMP также может использовать сценарии. Наибольшее количество существующих сценариев написано на языке, который называется Script-Fu и разработан специально для GIMP (он является диалектом LISP-подобного языка Scheme). Кроме того, сценарии для GIMP можно писать на Python, Perl. Это более гибкие и мощные языки в сравнении со Script-Fu, однако, у них есть свой недостаток: они зависят от программ, которые по умолчанию не устанавливаются вместе с GIMP (за исключением Python). Поэтому нет гарантии, что любая версия GIMP будет корректно выполнять эти сценарии.