PerfectVector
Автор: Irene Kim6 мин чтения

Экспорт Inkscape из командной строки: страница, рисунок, объект

Выберите границы страницы, рисунка или объекта для экспорта PNG из командной строки Inkscape. Сравните реальные результаты, создайте два размера и сохраните оригинал SVG.

На этой странице

Для экспорта PNG из командной строки Inkscape сначала выберите область: --export-area-page сохраняет рамку страницы, --export-area-drawing подгоняет ее под рисунок, а --export-id задает границы объекта. Добавьте --export-id-only, если результат должен показывать только этот объект. Руководство по командной строке Inkscape различает обрезку по объекту и скрытие остальных объектов.

Затем явно задайте ширину результата, прозрачность и имя файла. Эти настройки упрощают проверку и повторение небольшой партии файлов для передачи.

Что изменилось в наших тестовых экспортированных файлах

Мы создали SVG 600 × 360 с двумя именованными объектами: зеленым значком и коралловым образцом цвета, перекрывающим его правый край. На странице много пустого пространства. Общие границы рисунка — 400 × 180 единиц; отдельный значок — 180 × 180.

Мы экспортировали исходник через исполняемый файл командной строки официального приложения Inkscape 1.4.4 для macOS arm64. Во всех четырех экспортированных файлах ниже запрошены ширина 600 пикселей и прозрачный фон.

Выбор экспортаРезультат в этом тестеВидимое содержимое
Область страницыPNG 600 × 360Оба объекта с полями страницы.
Область рисункаPNG 600 × 270Оба объекта с более плотной обрезкой.
ID значкаPNG 600 × 600Значок и часть перекрывающего образца цвета.
ID значка с --export-id-onlyPNG 600 × 600Только значок.
Область экспорта и видимость объектов
Реальные PNG-экспорты Inkscape: сравнение полей страницы, плотных границ рисунка, обрезки по объекту с перекрывающим образцом цвета и изолированного значка
Реальные результаты Inkscape 1.4.4 из одного SVG. Предпросмотры масштабированы для вписывания в панели; шахматный фон находится за прозрачными PNG.

Изолированный объект намного крупнее внутри своего PNG, поскольку мы по-прежнему запросили 600 пикселей по его более узким границам. Постоянная ширина результата не означает постоянного масштаба изображения, если область экспорта меняется.

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

Создайте исходник со стабильными ID объектов

Сохраните следующее как master.svg. ID группы badge позволяет команде экспортировать ее круг и контуры вместе. Второй объект, swatch, намеренно пересекает границы значка.

<svg xmlns="http://www.w3.org/2000/svg"
     width="600" height="360" viewBox="0 0 600 360">
  <g id="badge">
    <circle cx="150" cy="160" r="90" fill="#236f62"/>
    <path d="M150 89L190 160L150 231L110 160Z" fill="#cde0a4"/>
    <path d="M150 115L175 160L150 205L125 160Z" fill="#236f62"/>
  </g>
  <rect id="swatch" x="200" y="140" width="260" height="80"
        rx="12" fill="#d68462"/>
</svg>

Для существующего дизайна проверьте ID в SVG перед написанием скрипта экспорта. Имя объекта, отображаемое редактором, может отличаться от XML id, используемого командой. Наше руководство по редактированию SVG объясняет, как проверять и менять разметку, сохраняя резервную копию.

Экспортируйте страницу, рисунок и изолированный значок

Команды ниже используют синтаксис Bash или Zsh. Выполняйте их из папки с master.svg. Сначала укажите в переменной оболочки путь к исполняемому файлу Inkscape:

inkscape_bin=inkscape
mkdir -p exports

Эта настройка предполагает, что inkscape доступен в вашем PATH. При обычной установке приложения macOS значение может быть /Applications/Inkscape.app/Contents/MacOS/inkscape. При присваивании заключите путь в кавычки, если он содержит пробелы.

Для всей страницы:

"$inkscape_bin" --batch-process master.svg \
  --export-type=png --export-area-page \
  --export-width=600 --export-background-opacity=0 \
  --export-filename=exports/page.png

Для обрезки вокруг рисунка:

"$inkscape_bin" --batch-process master.svg \
  --export-type=png --export-area-drawing \
  --export-width=600 --export-background-opacity=0 \
  --export-filename=exports/drawing.png

Для отдельного значка:

"$inkscape_bin" --batch-process master.svg \
  --export-type=png --export-id=badge --export-id-only \
  --export-width=600 --export-background-opacity=0 \
  --export-filename=exports/badge.png

Чтобы воспроизвести контрольное перекрытие на рисунке, удалите --export-id-only из последней команды и измените имя результата. Тогда коралловый образец цвета появится внутри обрезки значка. Выбор обрезки по ID сам по себе не изолирует изображение.

Руководство Inkscape описывает эти флаги. --export-width задает ширину растра в пикселях и переопределяет настройку DPI. Пропорции области экспорта определяют соответствующую высоту. Мы используем один вариант области в каждой команде и явный выходной путь .png.

Мы включили --batch-process в проверенные команды. В этом запуске macOS экспорт без него записывал PNG, но оставлял процесс работающим; команды выше завершались нормально. Этот флаг отличается от цикла оболочки, запрашивающего несколько размеров.

Создайте два размера без изменения оригинала

Для пары PNG с рамкой страницы повторите те же настройки области и измените только ширину и имя результата:

for export_width in 240 480; do
  "$inkscape_bin" --batch-process master.svg \
    --export-type=png --export-area-page \
    --export-background-opacity=0 \
    --export-width="$export_width" \
    --export-filename="exports/page-${export_width}.png" || exit 1
done

Наш запуск создал PNG 240 × 144 и 480 × 288. Оба сохранили ту же рамку страницы и прозрачный фон. Хеш SHA-256 файла master.svg совпал до и после экспорта, поэтому в этом тесте байты исходника не изменились.

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

Проверьте файлы перед передачей

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

  • Большие пустые поля: сравните экспорт страницы и рисунка. Выберите рамку, которую ожидает целевая среда.
  • Другой объект появляется в обрезке по ID: проверьте, нужен ли --export-id-only.
  • Прозрачность выглядит белой в программе просмотра: откройте PNG на контрастном фоне. Белый фоновый объект в исходнике — часть изображения и остается видимым даже при прозрачном фоне экспорта.
  • Изображение выглядит крупнее в разных результатах: сравните область экспорта, а также пиксельную ширину.

Руководство по экспорту PNG в Inkscape объясняет понятия страницы, рисунка, выделения и фона, стоящие за этими настройками. PNG — растровый файл для передачи, поэтому сохраняйте SVG для редактирования. См. руководство по файлам SVG, если нужно проверить реальное содержимое исходника.

Если вы сравниваете другой способ автоматизации, наше руководство по SVG в PNG через Sharp рассматривает средство отрисовки и процесс задания размеров этой библиотеки. Его параметры API не переносятся напрямую в Inkscape.

Если исходное изображение существует только в PNG или JPG, векторизатор изображений PerfectVector может подготовить редактируемую векторную графику перед этим этапом экспорта. Проверьте восстановленные контуры в редакторе, затем выберите рамку страницы и ID объектов. Процесс Trace Bitmap в Inkscape — еще один способ подготовки. SVG, который уже содержит нужные контуры, можно сразу экспортировать.

Частые вопросы

Почему экспорт страницы и рисунка дает разные размеры? Их границы могут иметь разные пропорции. В нашем тесте оба запрашивали ширину 600 пикселей, но страница 600 на 360 дала более высокий PNG, чем границы рисунка 400 на 180.

Почему export-id все еще включает другой объект? Он выбирает границы экспорта целевого объекта. Другая графика, пересекающая эти границы, может остаться видимой. Добавьте export-id-only, если хотите скрыть другие объекты.

Перезаписывает ли эта партия PNG исходник SVG? Показанные команды читают master.svg и записывают PNG с отдельными именами. Хеш нашего исходника после теста не изменился. Храните оригинал и передаваемые файлы отдельно, а дополнительные действия редактирования или сохранения проверяйте перед добавлением в скрипт.

Источники

  1. Inkscape Wiki — Using the Command Line — Процессы экспорта и различие между обрезкой по объекту и выводом изолированного объекта.
  2. Inkscape — Command-line manual — Параметры области, объекта, размера, фона и вывода.
  3. Inkscape Beginners' Guide — Exporting a PNG File — Понятия области экспорта и прозрачности.

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

Ещё из блога

Начните с более чистого SVG,
который проще редактировать