Векторная графика в Linux на примере редактора Inkscape

Некоторое время назад мне потребовалось оформлять плакат для выставки. У меня не возникло вопросов, в чём создавать плакат — разумеется, в векторном редакторе Inkscape! Однако мои молодые коллеги, с изумлением глядя на двухметровый плакат, предлагая самые безумные версии от Microsoft Paint до Word, под конец закидали меня вопросами о том, где бы такое сделать. Пост написан по результатам наших бурных обсуждений и моих скромных находок.

Векторная графика
Если очень кратко, то дело обстоит так: растровая графика оперирует с пикселями и их значениями, в то время как для векторной графики существуют линии, кривые и узлы. В растровой графике, например, чёрный прямоугольник будет задан множеством чёрных точек — пикселей. В векторной — прямоугольником со сторонами A и B, толщиной линии, и цветом линии и заливки. Разница будет ещё очевиднее, если вы захотите нарисовать изогнутую линию. В растровом виде это будет сделать трудно, зато в векторном — легче лёгкого: вам помогут кривые Безье, которые можно представить как гибкую линейку. Задаём точки и изгибы в каждом узле, и получаем кривые самых невообразимых видов.

Векторная графика имеет ещё одно большое преимущество: масштабируемость. То есть если вы сделали плакат на формат А4, а печатать надо на формат А0, с векторной графикой нет проблем — просто растянули и всё. С растровой вы обязательно получите артефакты, квадратики и прочую гадость.

Не буду пересказывать википедию, так как многие вещи лучше просто попробовать и понять, нужны они вам или нет. Тем более, что в Debian это делается щелчком мыши \ одной командой: установить inkscape. Почему именно Inkscape? Это самый продвинутый и доведённый до ума это векторный редактор в Linux (если среди читателей есть те, кто ищут аналог Adobe Illustrator в Linux — так вот это он :-)). Есть его Gimp-подобный аналог Sodipodi, но активности оттуда что-то не видно. Развивается проект sK1, но до повседневного использования ему ещё далеко. В общем, все примеры будут приводиться исключительно для Inkscape.

Inkscape — быстрый старт

Для примера приведу свой плакат с выставки — он целиком сделан в Inkscape.
После запуска нас ждёт главное окно программы: панель инструментов рисования слева (выделено синим цветом на скриншоте), цветовая палитра внизу (там же управление слоями — выделено жёлтым), и несколько полезных кнопок на главной панели сверху (группировка\разгруппировка объектов, свойства текста, выравнивание объектов — группа выделена зелёным цветом). Собственно, скриншот во всей красе:

Есть несколько интересных и полезных возможностей в Inkscape, которые могут пригодиться каждому, кому хоть раз приходилось делать для себя или других плакаты. Ну, как нарисовать кружочек или квадратик я говорить не стану — это можно легко догадаться самому. Интереснее другое: например, нужно нарисовать сложный объект. Для этого выбираем инструмент «Произвольные контуры» (с иконкой простого карандаша) и отводим душу в творчестве.
После всего этого любуемся результатами своего художественного мастерства и, например, замечаем, что вот этот уголок хорошо бы сгладить, а этот бугорок вообще не нужен.

Это легко поправить: выбираем инструмент «Редактировать узлы контуров» (стрелка с узлом, помечено на скриншоте красным цветом). После этого выбираем фигуру, которую нарисовали, и начинаем дёргать за узлы (чтобы их переместить) или «усы», которые от узлов отходят (они отвечают за изгиб кривой). С узлами можно поступать как с любыми другими объектами — удалять, добавлять или изменять. Для этого, после выбора инструмента «Редактировать узлы контуров», появится группа инструментов на верхней панели (отмечено зелёным цветом на скриншоте), которые позволят это сделать. Немного тренировки, чуток практики, и вы будете рисовать как завзятых художник.

Стрелки в Inkscape
Как-то мимо меня пробегала ссылка на пост, в котором автор рыдал в три ручья об отсутствии возможности в Inkscape ставить стрелки на линиях — очень нужная опция для рисования схем и простых чертежей. И она-таки в Inkscape есть, причём сокрыта не очень глубоко: по нарисованной линии щёлкаем правой кнопкой, выбираем пункт контекстного меню «Заливка и штрих», идём в «Стиль штриха», и там выбираем любую понравившуюся нам стрелку в пункте «Конечные маркеры» и «Начальные маркеры». Результат на скриншоте:

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

Интересные возможности Inkscape
Немного потренировавшись рисованию в Inkscape, вы заметите, что часть инструментов (линии, текст, градиент, пипетка) вам уже знакомы из Gimp. Но так как Inkscape векторный редактор, а не растровый, в нём есть и отличия: например, инструменты для выравнивания объектов (на главной панели, вверху, на скриншоте помечено голубым цветом). Например, мне нужно было выровнять названия и прямоугольные блоки по центральной оси. Этим-то инструментом выравнивания я и воспользовался:

В Inkscape можно проворачивать много трюков — так много, что можно даже завести отдельный блог для этого 🙂 Но я все описывать не стану, а только те, которые мне реально пригодились (и детали которых я часто забываю).

Трассировка растровой графики в векторную в Inkscape
Часто удобно хранить вставляемые в Inkscape изображения в векторном виде — но картинка-то изначально растровая! В самом Inkscape есть очень и очень приличный плагин трассирования растровых изображений в векторные — он использует трассировщик potrace. Хотя работает трассировщик не быстро и имеет минимум параметров, результат очень хорош. Например, он позволяет быстро и точно трассировать сложные логотипы, которые некоторые несознательные граждане присылают в растровом виде.
Для того, чтобы им воспользоваться, импортируем в Inkscapе растровое изображение, выделяем его и идём в меню «Контуры» искать пункт «Векторизовать растр…». Перед нами появится незамысловатый диалог:

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

Временное сокрытие сложных объектов

Вот это было для меня крепким орешком: дело в том, что в плакате были сложные отрассированные объекты, которые сильно тормозят отрисовку. Часто нужно их просто скрыть на некоторое время, и не городить при этом слоёв. Вроде бы всё просто: для этого можно выделить объект, нажать правую кнопку и в свойствах объекта поставить флажок «Hidden».

В документации по этому поводу говорится:
While these are solutions, the ultimate solution is just to not
hide objects. Instead put them on a separate Layer and hide the
Layer (see the section called «Layers»).

Я не могу с ними согласиться: иногда слоёв и так много, и городить ещё один совсем не хочется. Потом, чаще всего объект перерисовывается и хочется просто оставить его на месте и вообще не трогать. Наконец, сдаётся мне, что такие вот «ultimate solution» есть дешёвая отмазка при отсутствии инструментов работы со скрытыми объектами: дескать, сие не баг но фича. Но мы-то знаем… 🙂

Но тут появляется маленькая проблема: как его обратно показать!? Это (по крайней мере в версии 0.45) несколько неочевидно. Это даже стало поводом для скриншота:
Так вот, чтобы сделать объект снова видимым, сначала щёлкаем на любом видимом объекте и открываем окно «Свойства объекта». Далее нажимаем CTRL+F для поиска, отмечаем галку «Включая скрытые», и в поле Стиль подставляем display:none

Ищем — Inkscape будет по очереди находить скрытые объекты. Когда он доберётся до искомого, отобразится его (скрытого объекта) рамка. Тут-то нам и пригодится заблаговременно открытое окно «Свойства объекта» — оттуда мы убираем галку «СКРЫТЬ» у найденного скрытого объекта. Всё, он должен снова стать видимым.

Есть ещё такой вариант: нажимать на кнопку TAB для выделения объектов и смотреть, когда появится рамка вокруг скрытого объекта. При этом в настройках Inkscape (Файл — Настроить Inkscape — Выделение) должна быть снята галка «Игнорировать скрытые объекты».

Заключение
Это, разумеется, далеко не полный перечень возможностей Inkscape (которые к тому же постоянно развиваются). Здесь я только упомянул о нескольких вещах (трассировка, выравнивание и особенно сокрытие объектов, о котором я постоянно забываю). Буду рад, если для кого-то векторные редакторы станут ещё одним полезным инструментов для работы и творческого самовыражения.

160090cookie-checkВекторная графика в Linux на примере редактора Inkscape

Автор публикации

не в сети 3 месяца

ViGo

Комментарии: 6Публикации: 1151Регистрация: 29-04-2020
Если Вам понравилась статья, то поделитесь ею в соц.сетях:
guest

0 комментариев
Inline Feedbacks
View all comments