it-swarm-ru.tech

Приложение командной строки для преобразования SVG в PNG в Mac OS X

Существуют ли программы командной строки, которые могут конвертировать SVG в PNG, работающие в Mac OS X?

Правка : У Дилана Б был хороший ответ с ImageMagick. Для справки: чтобы установить ImageMagick с поддержкой SVG в Mac OS X с помощью MacPorts, выполните

port install imagemagick +rsvg
151
Lorin Hochstein

Или без установки чего-либо:

qlmanage -t -s 1000 -o . picture.svg 

Он создаст файл picture.svg.png шириной 1000 пикселей.

Я проверил это только на OS X 10.6.3.

219
tst

Я обнаружил, что для меня лучшим инструментом для работы является rsvg-convert.

Его можно найти в brew с brew install librsvg и использовать так:

rsvg-convert -h 32 icon.svg > icon-32.png

(В этом примере создается PNG с высотой 32 пикселя. Ширина определяется автоматически.

98
Ahti

ImageMagick является чрезвычайно универсальным редактором изображений командной строки, который, вероятно, конкурировал бы с Photoshop, если бы у него был, вы знаете, графический интерфейс. Но кому это нужно в любом случае. :П

Что-то вроде следующего преобразовало бы .svg в .png после установки:

$ convert picture.svg picture.png

Оригинал .svg не удаляется.

40
Jessie

Inkscape с его Commandline-Interface дает лучшие результаты для меня:

/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg

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

28
seb

Хорошо, я нашел простой способ сделать это на Mac, если у вас есть Google Chrome.

В одном предложении это изображение svg на веб-странице (должно быть в файле html), щелкните правой кнопкой мыши на изображении и выберите "Копировать изображение" и вставьте его в приложение "Просмотр".

Шаги:

  1. Загрузите или сохраните файл svg на жестком диске, скажем, somefile.svg
  2. Теперь в той же папке просто создайте html-файл tmp.html, содержащий следующую строку: <img src="somefile.svg">
  3. Теперь откройте этот HTML-файл в Google Chrome
  4. Вы должны увидеть изображение. Теперь просто щелкните правой кнопкой мыши на изображение и выберите "Копировать изображение"
  5. Перейдите в приложение предварительного просмотра Mac и выберите "File -> New from Clipboard"
  6. Теперь File -> Save файл, и у вас есть файл png. (или другие типы файлов).

Это проверено на текущем Chrome (версия 48.0) на Mac OS X El Capitan.

Обновление: Я не уверен, связано ли это с некоторыми ограничениями, введенными Google Chrome. Я просто пробую SVG-файл, используя Chrome 58.0, и получаю крошечное изображение из описанного выше метода. Если вы видите этот случай, вы также можете использовать

<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">

и у вас будет достаточно хорошее изображение на экране, чтобы сделать снимок экрана - используя CmdShift4 или же CmdShift3 на Mac, например. Убедитесь, что вы изменили размер окна Chrome до максимально допустимого на экране.

15
太極者無極而生

Если вы хотите сделать много сразу, вы можете:

mogrify -format png *.svg

Есть варианты изменения размера и т.д. На лету тоже.

5
DefenestrationDay

Попробуйте Apache Batik .

Java -jar batik-rasterizer.jar FILES

Он также поддерживает пакетное преобразование и имеет много других полезных опций.

4
Behrang

Я сделал svgexport , используя для этого node/npm, он кроссплатформенный и может быть таким простым:

svgexport input.svg output.png
4
Ali Shakiba

Вы также можете использовать phantomjs для рендеринга SVG. Преимущество в том, что он отображает его так же, как браузер, так как это, по сути, безголовый WebKit.

После того, как вы загрузите его, вам понадобится phantomjs (двоичный файл) и файл rasterizer.js из папки с примерами.

phantomjs examples/rasterize.js Tiger.svg out.png
3
Stofke

Команда преобразования в ImageMagick, использующая некоторые другие параметры, сделала это для меня. Вот мое пакетное решение Bash-скрипта, которое разделяет задачу между несколькими процессами, чтобы использовать все ваши ядра! Изменить по необходимости.

batchConvertToSVG.sh (принимает число процессов в качестве аргумента):

end=$(( $1 - 1 ))
for i in `seq 0 $end`;
        do
            echo Spawning helper $i of $end
                ./convertToSvgHelper.sh $i $1 &
        done 

convertToSvgHelper.sh:

n=$1
for file in ./*.svg; do
   filename=${file%.svg}
   echo converting file named $filename
   test $n -eq 0 && convert -format png -resize 74 -background transparent -density 600 $file $filename.png
   n=$((n+1))
   n=$((n%$2))
done
1
sudo

Я использую эту команду на моем Linux. Это должно работать и для вас.

mogrify +antialias -density 2000 -verbose -format png *.svg

Я узнал, что без аргумента «-density» растровое изображение будет очень пикселизированным. Измените значение -density в соответствии с вашими потребностями.

1
BersekerBernhard

Как прокомментировал ранее ImageMagick делает свое дело. Я просто хотел добавить точку для GraphicsMagick , старого форка ImageMagick, который имеет некоторые улучшения (и намного меньше раздувания зависимостей при установке через fink).

0
user31752

Это то, что я использовал:

brew install imagemagick --with-librsvg

Затем выполните следующие команды:

find . -type f -name "*.svg" -exec bash -c 'convert $0 $0.png' {} \; rename 's/svg\.png/png/' *

Надеюсь, поможет.

0
Alan Dong

Вы можете выполнить пакетное преобразование всей папки файлов SVG в формат PNG. Я использовал интерфейс командной строки Inkscape для создания png-файлов шириной 80 пикселей.

find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;

png будет сохранен с оригинальным именем * .png

0
James Matthew Mudgett