Ответ 1
Я не знаю об Illustrator, но это должно быть легко с помощью Параметры командной строки Inkscape. Например, используя Ruby:
$ ruby -e '[10,100,200].each { |x| `inkscape --export-png logo#{x}.png -w #{x} logo.svg` }'
У меня есть изображение логотипа в формате SVG, и мне интересно, может ли этот способ генерировать несколько png файлов разных размеров.
Например, я установил 20 различных ширины и высоты, и он генерирует 20 файлов PNG. Это нормально, если мне нужно сделать это по 5 изображений за раз.
У меня установлен иллюстратор и не могу понять, как это сделать на нем.
Спасибо за вашу помощь!
Я не знаю об Illustrator, но это должно быть легко с помощью Параметры командной строки Inkscape. Например, используя Ruby:
$ ruby -e '[10,100,200].each { |x| `inkscape --export-png logo#{x}.png -w #{x} logo.svg` }'
Принятый ответ в порядке. Существует официальная официальная помощь по параметрам. Здесь также будут полезны основные команды Shell:
for x in 10 100 200 ; do inkscape --export-png logo${x}.png -w ${x} logo.svg ; done
В командной строке в окнах используйте эту строку из @avalancha в комментариях
for %x in (100 200 300) ; do inkscape --export-png logo%x.png -w %x logo.svg ; done
Здесь, как сделать это намного быстрее (3 раза для меня всего за 5 экспонатов на SSD), запустив Inkscape только один раз и как экспортировать изображения в разные каталоги (как использует Android):
#!/bin/sh
# Converts the Inkscape icon file ic_launcher_web.svg to the launcher web & app png files.
PROJECT="My Project Name"
INPUT="source-assets/ic_launcher_web.svg"
MAIN="${PROJECT}/src/main/"
RES="${MAIN}res/"
DRAWABLE="${RES}/drawable"
inkscape --shell <<COMMANDS
--export-png "${MAIN}ic_launcher-web.png" -w 512 "${INPUT}"
--export-png "${DRAWABLE}-mdpi/ic_launcher.png" -w 48 "${INPUT}"
--export-png "${DRAWABLE}-hdpi/ic_launcher.png" -w 72 "${INPUT}"
--export-png "${DRAWABLE}-xhdpi/ic_launcher.png" -w 96 "${INPUT}"
--export-png "${DRAWABLE}-xxhdpi/ic_launcher.png" -w 144 "${INPUT}"
quit
COMMANDS
Это оболочка bash script. В Windows вы можете запустить его в MINGW32 (например, GitHub Git Shell) или преобразовать его в оболочку Windows DOS script. (Для DOS script вам придется изменить "КОМПАКТНЫЕ ДАННЫЕ" здесь, что может обрабатывать DOS. См. heredoc для Windows batch? для таких методов, как повторяя несколько строк текста в временном файле.)
Взгляните на inkmake. Я фактически сделал этот инструмент только для пакетного экспорта SVG файлов в PNG и т.д. В разных размерах. Это был дизайн, потому что я хотел сохранить Inkscape, а затем просто запустил inkmake
в терминале и экспортировал все зависящие PNG файлы.
Если вы еще этого не сделали, установите imagemagick
. В OSX требуется поддержка rsvg
:
brew install imagemagick --with-librsvg
Вам также нужен inkscape, иначе вы можете обнаружить, что ваши изображения выглядят черными (за исключением прозрачных областей).
brew install homebrew/gui/inkscape
Затем вы сможете конвертировать следующим образом:
convert -density 1536 -background none -resize 100x100 input.svg output-100.png
1536
- это обходное решение для чего-то, с чем я не могу найти хорошие ответы. В моих экспериментах, опуская аргумент -density
, создаются изображения, которые ужасно малы. Преобразование изображения в -size 100x100
в -density 1024
дает мне выходной результат 96x96
, поэтому я вместо этого перехожу к плотности и изменению размера до целевого размера.
TL; DR использует плотность, которая в 1500 раз больше вашего целевого размера, и оттуда.
Существует множество способов для массового запуска этой команды. Вот один в оболочке:
for s in 10 100 200 ; do convert -density 1536 -background none -resize ${s}x${s} input.svg output-${s}.png ; done