Как автоматически экспортировать несколько ресурсов с разными разрешениями из одного файла SVG с помощью Inkscape?

Спасибо за ваши комментарии. Я понимаю, что моя первоначальная формулировка могла сбивать с толку, поэтому я попытался уточнить, что я ищу...


Я использую Inkscape для разработки и экспорта ресурсов приложений. Эти активы создаются в 4-кратном масштабе (что соответствует xxxhdpiна Android или @4xiOS). Предположим, у меня есть несколько векторных значков размером 256x256 пикселей в одном SVG, открытом в Inkscape. Мне нужно экспортировать каждый из этих значков со следующими разрешениями:

  • 22,50 dpi ( mdpiдля Android) -> 64x64 пикселей
  • 33,75 dpi ( hdpiдля Android) -> 96x96 пикселей
  • 45,00 dpi ( xhdpiдля Android, @2xдля iOS) -> 128x128 пикселей
  • 67,50 dpi ( xxhdpiдля Android, @3xдля iOS) -> 192x192 пикселей

Делать это вручную очень утомительно. Мой вопрос таков: есть ли эффективный способ экспортировать один или несколько конкретных объектов в файле SVG с несколькими разрешениями из Inkscape?

Примечание . Я собрал работающее скриптовое решение, которое несколько раз вызывает svg-objects-export , но оно очень медленное и неудобное, потому что мне нужно адаптировать скрипт каждый раз, когда я добавляю ресурс в SVG-файл.

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

По соображениям качества я также не ищу решение для уменьшения масштаба экспортируемых PNG.

У вас есть возможность экспортировать параметры командной строки ? Флаг --export-dpi может помочь.
@PaoloGibellini Хороший намек, спасибо. Сценарий Python, о котором я упоминал выше, также использует эту опцию. Кажется, что мне пришлось бы указывать каждый объект вручную с помощью --export-id. Я надеялся найти решение, которое позволило бы мне экспортировать все объекты в SVG. Хотя такого варианта, похоже, не существует.
Ммм... возможно, будет достаточно простого пакетного файла или файла оболочки.
@PaoloGibellini Да. У меня есть рабочий сценарий оболочки, который делает это, но мне нужно указать идентификатор каждого объекта, который я хочу экспортировать. Я ищу более простое (и более быстрое) решение, которое экспортировало бы все объекты, которые в настоящее время находятся в SVG, во всех желаемых разрешениях без необходимости изменять скрипт.
Хорошо, понял, извините, на данный момент у меня нет лучших идей.
Я не понимаю проблемы с решением командной строки. У меня , например, inkscape my-file.svg --export-png=my-file-mdpi.png --export-dpi 22.50работает нормально. Вам просто нужно создать 4-строчный скрипт, который экспортирует в каждом размере. Сценарий может даже принимать имя файла в качестве аргумента, поэтому его можно использовать повторно, если вы делаете это регулярно для разных изображений.
@Scribblemacher Спасибо. Я понимаю, что неправильно указал, что ищу решение для экспорта (нескольких) отдельных объектов из одного файла SVG. Я обновил вопрос соответственно...
А, теперь я понимаю. Использование --export-id, как упомянуто @KlaasNotFound, кажется мне прекрасным решением, если вы даете областям предсказуемое имя. Лично я бы просто разделил его на отдельные файлы SVG и запустил сценарий для каждого файла в каталоге. Хотя это, вероятно, распространенный вариант использования Inkscape, у него просто нет возможности делать то, что вы просите (как есть — я уверен, что можно написать расширение). Мне было бы любопытно, есть ли в Illustrator такая функция.

Ответы (4)

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

клоны Inkscape

Возможно, попробуйте любое из этих расширений (не проверял их):

https://inkscape.org/en/~owenfromcanada/%E2%98%85androidvector (другая концепция, экспортирует векторы для Android)

https://github.com/ChristianBecker/inkscape-android-export (то, что вы просили)

(поиск в Интернете может найти еще пару из них, ключевые слова «расширение Inkscape android»)

Существует расширение для генератора значков приложений от Carlos Vazquez, но похоже, что автор забросил проект и не принимает запросы на включение. Лучший форк на данный момент: https://github.com/firephreek/inkscape_app_icon_generator

Проверьте этот инструмент https://github.com/redwarp/9-patch-resizer . Он автоматически изменит размер файлов .png на несколько плотностей.

«Из соображений качества я также не ищу решения для уменьшения масштаба экспортируемых файлов PNG».