Обзор GIMP 2.7.0

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

Итак, версия 2.7.0 выпущена, и на повестке дня:

  • полный переход к парадигме проектных файлов;
  • дальнейший переход на GEGL;
  • ввода текста прямо на холсте;
  • категоризация ресурсов при помощи меток;
  • работа над динамикой кистей;
  • просмотр и редактирование метаданных;
  • что подвисло;
  • Google Summer of Code 2009;
  • как поживает GEGL;
  • прогнозы.

Полный переход к парадигме проектных файлов

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

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

В новой нестабильной версии открываемый файл считается импортированным и становится частью проекта, а сохранение всегда производится в проектный файл XCF, где сохраняются и слои с режимами смешивания, и маски. Если же вы хотите просто отредактировать изображение, которое уже находится в конечном формате вроде PNG или TIFF, к вашим услугам два новых пункта меню:

  1. Экспортировать… (Ctrl+Shift+E) — обычный диалог для экспорта проекта в файл, отличный от XCF. Нужно самому указать имя файла.
  2. Перезаписать <имя_файла> — выполняется экспорт в автоматически подставляемое имя первого импортированного файла. Из диалогов — только форматоспецифичные параметры сохранения, и от них понемногу избавляются.
  3. Экспортировать в (Ctrl+E) — появляется на месте Перезаписать <имя_файла> при создании нового изображения, а не открытии существующего, для повторного экспорта в ранее указанный файл.

Так что если вы используете GIMP не для создания сложных многослойных изображений, нужно «всего лишь» назначить комбинацию клавиш для команды Перезаписать, приучиться использовать ее вместо Ctrl+S и не ругаться в присутствии детей грязными словами, когда поCtrl+W после этого спрашивают о сохранении изменений в проекте, который вы даже не собирались создавать.

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

На первый взгляд это изменение может показаться контрпродуктивным и наверняка вызовет шквал критики. Не могу сказать, что в первую же минуту был согласен с новой концепцией. Но затем припомнил, что не единожды забывал дополнительно сохранять XCF и в результате был вынужден позднее по памяти восстанавливать многослойные композиции с хитрыми режимами смешивания, фильтрами и масками. Так что принудительное сохранение в XCF на мой взгляд все-таки нужно. Да и для простого редактирования уже есть более простые редакторы — Fotoxx, например.

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

Дальнейший переход на GEGL

Тем, кто пропустил предыдущий репортаж с реалити-шоу «GIMP-3», сообщаю, что уже была начата работа над портированием программы на GEGL — новый движок, с которым GIMP сможет безусловно отвечать требованиям профессионалов. В текущей стабильной версии портирование выражается в необязательном использовании GEGL для инструментов цветокоррекции (с временно неиспользуемой точностью в 32 разряда на цветовой канал) и пробном интерактивном инструменте, выполняющем операции GEGL над слоем или выделением. Последний даже сформировал вокруг себя постоянно растущее сообщество фанатов операции c2g, которая превращает любую цветную фотографию в имитацию пленочного ч/б.

В новой версии добавился очередной переключатель: отрисовка проекции средствами GEGL. В терминологии GIMP проекция — сплющенное представление всех видимых слоев с масками. Т.е. фактически внутри GIMP уже производится композиция нод — для слоев и масок (можно визуализовать дерево графов через меню File > Debug > Show Image Graph). Отрисовка, правда, притормаживается, но к этой теме мы еще вернемся. Кроме того, при использовании GEGL для проекции такие режимы смешивания как Тон, Насыщенность и Значение рассчитываются в цветовом пространстве CIELCH (CIELAB в полярных координатах).

Список изменений, которые необходимо внести, прежде чем переход на GEGL можно считать завершенным, примерно таков:

  • рассказать babl и GEGL об управлении цветом;
  • научить GIMP использовать типы данных GEGL;
  • превратить большее количество фильтров GIMP в операции GEGL и реализовать поддержку расширений для прежних версий GIMP;
  • на порядок ускорить отрисовку (к этой теме мы еще вернемся).

Ввод текста прямо на холсте

Алилуйя — ну что тут еще сказать. Этот чудовищный, ужасный и неудобный диалог наконец-то умер. Его все еще можно вызвать (странно, что без пентаграммы), если без него жизнь не в радость. Только кому это надо, когда текст можно вводить, выделять, вырезать и вставлять прямо на холсте. Сюда бы еще сложное форматирование, но всему свой черед.

Внутри используется pangocairo, поэтому со вводом текста на азиатских языках с хитровыдуманными письменностями сложностей быть не должно. Заодно, кстати, добавлен выбор всех вариантов хинтинга, доступных FreeType.

Спасибо Дэниелю Эдделенду, реализовавшему этот проект в рамках Google Summer of Code 2008, и Митчу Наттереру, который усовершенствовал код.

Категоризация ресурсов метками

Это проект Ауримаса Юски, также выполненный в рамках Google Summer of Code 2008. Ауримас тесно сотрудничал с эргономистом Петером Сиккингом, и функция работает замечательно просто:

  1. Выделяете нужный ресурс (кисть, градиент, текстуру).
  2. Под перечнем ресурсов набираете текст метки или нескольких меток, через запятую, и нажимаете ввод.
  3. При вводе работает автоподстановка введенных ранее меток.
  4. Далее при работе в поле над перечнем ресурсов набираете текст метки или меток (через запятую). По мере набора (точно так же работает автоподстановка) список видимых ресурсов фильтруется.

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

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

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

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

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

Кроме того, добавлен регулятор вращения кисти (от -180° до 180°). Логично было бы предположить добавление вслед за тем поддержки вращения стилусом планшета. Поживем — увидим.

Просмотр и редактирование метаданных

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

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

Сейчас в диалоге можно просматривать данные Exif и XMP, но не редактировать их. В ближайших планах — реализовать указание метаданных Dublin Core и сохранение файла XMP, а также подчистить интерфейс самого диалога.

Задача на первый взгляд кажется не очень сложной, но тут стоит учесть, что у Романа очень небольшой опыт программирования на Си (и под GTK+). Из версии 2.4 этот код уже исключали, поэтому надеюсь, что Роман сможет довести начатое до победного конца.

Различные изменения в пользовательском интерфейсе

Перечислю несколько основных изменений в пользовательском интерфейсе.

Мое любимое среди них — вычисления в виджетах ввода чисел. Теперь, скажем, при масштабировании изображения вы добавить к автоматически подстановленному значению 3474px ‘+ 213px’ и получить 3685 пикселов.

Или, скажем, ввести что-нибудь вроде ‘570pt / 2cm’: единицы измерения в строке ввода не обязаны быть одинаковыми. Таблица единиц измерения доступна через меню Правка > Единицы измерения…, и в нее можно добавить собственные единицы измерения (33 попугая и… :)).

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

  • Обычный, Растворение
  • Только светлое, Экран, Осветление, Добавление
  • Только темное, Умножение, Затемнение
  • Перекрытие, Рассеянный свет, Направленный свет
  • Разница, Вычитание, Извлечение зерна, Объединение зерна, Деление
  • Тон, Насыщенность, Значение, Цвет

У меня ушло недели две на то, чтобы привыкнуть, но такой вариант в конечном счете выглядит логичнее. Спасибо, Мартин :)

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

Что подвисло

Подвисли два проекта:

  • Векторные слои. Основная работа по интеграции этого проекта GSoC2006 была выполнена Митчем Наттерером в первой половине этого года. Оставшаяся часть работы — добавление собственно интерфейса и отмены/возврата действий. В июне Петер Сиккинг, архитектор эргономики GIMP, провел трехдневный практический курс с четырьмя группами студентов, предложив им этот проект. О результатах Петер ужеотчитался в своем блоге. Так что сначала будет функциональная спецификация, а уже потом код. Судя по имеющимся наработкам, заодно может быть реализовано человеческое рисование геометрических примитивов.
  • Улучшения фреймворка Python. Этот прошлогодний проект GSoC достаточно важен, потому что делает сценарии на Python полноценными расширениями, способными делать все то же, что и обычные расширения на C/C++/С#. В том числе, создавать область предпросмотра. С вопросами, когда код будет портирован, предлагаю обратиться к руководителю студента.

Google Summer of Code 2009

В этом году GIMP как организация выступает с шестью проектами. Два из них касаются собственно GIMP:

  1. Женьфень Жао продолжает начатую Кайей работу над кистевой динамикой, под ее же руководством. Одна из задач проекта — реализовать интерфейс для управления кривыми отклика на действия инструментом ввода (стилусом Wacom, к примеру). Студент активно работает как со своим руководителем, так и с Петером Сиккингом, который понемногу шлифует спецификацию.
  2. И Динь занимается доработкой инструмента для быстрого выделения объектов на переднем плане. За последние три-четыре года все крупные компании (включая Microsoft) и проекты отстрелялись со своей реализацией такого инструмента. GIMP оказался одним из первых, но развитие инструмента на этом и завершилось, при том, что технология SIOX, которая легла в основу инструмента, оказалась реализованной в GIMP неполностью, а сам инструмент работает не очень быстро. Студентка добавляет уточняющую кисть, упрощающую выделение сложных объектов, таких как облака или волосы, а руководит ею Джеральд Фридланд — разработчик самой технологии SIOX .

И целых четыре проекта отдано GEGL, причем цель первых двух из них — повысить качество изображений после смены размера и при трансформациях вроде вращения или коррекции перспективы:

  1. Адам Тюрко занимается портированием сэмплеров Nohalo Level 1 и Snohalo Level 1 из VIPS в GEGL, а также созданием сэмплеров Nohalo и Snohalo Level 2 и 3, каждый их которых должен выбираться в зависимости от запрошенного качества конечного изображения при изменении размера изображения. Примеры можно посмотреть здесь.
  2. Эрик Дауст, в свою очередь, занимается созданием новых сэмплеров, используемых главным образом при уменьшении изображений и ресэмплинге.
  3. Хенрик Акессон, хорошо зарекомендовавший себя еще до начала GSoC, занимается изучением и улучшением производительности GEGL. Результаты тестов производительности скоро можно будет посмотреть в сети. Руководит его работой, что любопытно, автор VIPS Джон Капитт.
  4. Джерсон Майкл Перпетуа работает над использованием GPU для буферов и операций GEGL. К сожалению, последние две недели от него совсем ничего не слышно, а в дерево git добавлен только код, которым он отчитывался на промежуточной оценке результатов.

Тема использования графических процессоров не так проста как кажется. Почему-то принято считать, что само по себе использование GPU уже дает мгновенный прирост производительности, а это утверждение требует массы оговорок. Современные графические процессоры не настолько быстро передают обработанные данные обратно, чтобы прирост в скорости был ощутим, а если данных очень много, то вы даже теряете в скорости, а не приобретаете. Эффективным использование GPU станет после повышения скорости шин и начала массового производства многоядерных графических процессоров. Не верите мне — почитайте мнение специалистов Adobe (12).

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

Возможно, мы не так далеки от момента, когда сравнение GIMP+GEGL против Photoshop+PixelBender станет реальностью.

Ну и последнее, что здесь стоит отметить: именно сегодня GSoC 2009 входит в завершающую стадию.

Как поживает сам GEGL

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

Число проектов, основанных на GEGL, тем не менее растет. Первым из них, если помните, была программа gnome-scan. Вторым стал медленно развивающийся лайтрумозаменитель под названием Niepce Digital. Юбера, к сожалению, буквально разрывает между несколькими проектами: к Abiword и gphoto недавно прибавился gnote — портированный на C++ «заметочник» Tomboy.

Третьим проектом оказался тоже своего рода лайтрумозаменитель. С названием Йоханнес Ханика мудрить не стал: darktable. Проект, судя по SVN, развивается достаточно активно, недавно была выпущена версия 0.2. Пока что для обработки используется только LibRaw, а использование GEGL опционально из-за медлительности последнего. Но ввиду изложенных выше событий все это скоро может измениться. В программе изначально реализована модульная архитектура, так что навороты можно дописывать не трепанацией черепа, а наращиванием конечностей (привет, Шива, швейцарский армейский бог).

Наконец, долгосрочный план разработчиков F-Spot также состоит в использовании GEGL. С этой целью Рубен Вермеерш еще год назад написал для GEGL привязки C#. Пока что они не используются, хотя в этом году проектом GSoC Рубена было добавление базовой обработки Raw в F-Spot.

Прогнозы

Гимперы хорошо известны приобретенной склонностью не делать прогнозы и не давать обещания. Это можно лишь с переменным успехом делать за них, принимая огонь на себя. Что, кстати, рождает чудовищные слухи вроде «Так ведь уже есть полная поддержка CMYK!».

Вот о нем, родимом, и поговорим. На LGM’09 Петер представил два проекта, одним из которых является разработанная концепция поддержки CMYK как подмножества плашечных цветов. Постоянные посетители форума наверняка помнят эту ветку обсуждения.

В двух словах. Предполагается реализовать своеобразный режим мастеринга, где исходное изображение остается в родном цветовом пространстве (RGB, например), а вся работа ведется над проекцией, для которой, разумеется, доступны разнообразные инструменты — от обычных инструментов выделения и фильтров до инструментов растискивания. Т.е. конечное изображение может состоять из каких угодно каналов. Если же в программе открывается (простите, импортируется :)) цмиковый TIFF или PSD, работа автоматически переносится в эту проекцию. Пока что непонятно, в цикле разработки какой версии это появится, но вероятность, что в 2.8, исчезающе мала.

Второй представленный проект — работа над интерфейсом. Вот уж за что пользователи не устают пинать программу и разработчиков. Судя по всему, озвученный там же на конференции переход к интерфейсу на вкладках произойдет в ходе разработки 2.10 (20091019 — решено сделать в 2.8, первичная реализация ожидается в версии 2.7.1). Зато объединения инструментов трансформации в один интерактивный можно ждать как раз в 2.8. Работа над спецификацией уже начата.

Будут ли сюрпризы в 2.8? Возможно, нет. Тем не менее, работа над некоторыми функциями уже была начата, но затем отложена до цикла подготовки версии 2.10.

Номер один — существующий патч, добавляющий открытие, цветокоррекцию и сохранение PNG в режиме 16/32 разряда (с плавающей точкой) на цветовой канал. Решение не включать его обосновано тем, что PNG явно недостаточно, а кроме того, поддержка высокой разрядности на цветовой канал должна быть обеспечена и для фильтров.

Некоторые фильтры, правда, уже готовы: тот же Liquid Rescale (точнее, liblqr) потенциально может работать в режиме 64 разряда на цветовой канал, да еще и в разных цветовых пространствах (L*a*b*, например). Но на практике получилось бы как с пятым и шестым фотошопом: один фильтр работает, а для другого, уж извините, придется конвертнуть изображение в 8 разрядов на цветовой канал и обратно. Ну и смысл? А вот помощь разработчикам в портировании загрузчиков и сохраняльщиков файлов в GEGL только приблизило бы высокую точность обработки к реальности.

Номер два, и здесь пока что непонятно, будет ли работа действительно отложена до 2.10 — группировка слоев. Внутренняя реализация частично готова, а графический интерфейс в последний момент перед выходом 2.7.0 был убран. (20091019 — похоже, уже не уберут.)

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

  • работа над давними функциональными недочетами (сэмплеры, SIOX, метаданные);
  • работа над производительностью нового движка и постепенная его интеграция (проект Хенрика, цветокоррекция на основе GEGL в 2.6, проекция на основе GEGL в 2.7.0);
  • работа на будущее движка (проект Джерсона);
  • работа над вылизыванием эргономики (изменения в 2.6 и 2.7.0, работа Петера над спецификациями);
  • расширение рисовательных функций программы (работа Алексии в 2.6 и 2.7.х, проект Женьфеня).

Ну и напомню: в проекте сейчас всего лишь горстка активных разработчиков, а не большая команда как в Mozilla Firefox, хотя по уровню сложности и базе кода это вполне сравнимые проекты.

Поэтому без эпических свершений, но зато уверенно и в верном направлении, что важнее всего. Вряд ли вы хотели бы, чтобы разработчики вдруг решили сползти в нишу, где уже обосновались Photofiltre, Paint.Net и иже с ними.

Что касается даты выпуска 2.8, она сейчас никому точно не известна, но судя по тому, чтоговорят некоторые разработчики, конец 2009 года выглядит достаточно реалистично. Если взять за основу решения, принятые в ходе встречи на конференции Libre Graphics Meeting в начале мая этого года, получается, что практически все задачи помеченные как обязательные для 2.8 уже выполнены. Остается лишь интеграция двух проектов GSoC этого года. Реализация спецификации по экспорту/сохранению данных (см. выше о смене парадигмы) помечена как необязательная, но готова, по словам Мартина, процентов на 80.

И последний момент. Несмотря на то, что в предыдущей стабильной версии программы, 2.6, изменений было не так много (по сравнению с 2.4), отзывы о ней были достаточно доброжелательными. Я бы даже сказал, непривычно доброжелательными. Что приводит к мысли о том, что несмотря на годы не слишком активного развития GIMP по-прежнему востребован.

Add a comment