Перейти к содержимому

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

140

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

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

port install imagemagick +rsvg 
93 979 просмотров
Lorin Hochstein спросил 16 лет назад
L 1 515

14 ответов

195
Принятый ответ

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

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

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

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

Какой отличный совет.

drewk · 16 лет назад · 0

К сожалению, это обрезает изображения в квадрат.

Martijn Pieters · 15 лет назад · 34

Ах, qlmanage -t` дает эскиз, используемый Quick Look (в Finder и т. Д.). Умная идея К сожалению, эти миниатюры могут содержать ошибки, особенно если в них есть текст.

ShreevatsaR · 15 лет назад · 5

Это создает изображения с файлом SVG в 1-м квадранте. Не обрезать автоматически. Попытка конвертировать файлы из существительного проекта - желаю, чтобы это сработало.

Alex Cook · 13 лет назад · 6

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

Johan · 12 лет назад · 0

Еще одно замечание: он не сохранил прозрачный фон моего изображения ... все еще довольно удобно и работает для меня иначе! :)

Drewdavid · 11 лет назад · 0

Ты начальник!

lvp · 11 лет назад · 1

Любой способ сделать это без добавления белого фона?

sudo · 11 лет назад · 0

Работает с OS X 10.10.4 "Yosemite". Отличный совет, спасибо!

Laryx Decidua · 11 лет назад · 0

Это решение не учитывает прозрачность. Инструмент rsvg-convert в ответе @ ahti работал для меня раньше.

BenR · 10 лет назад · 6

Опция -s принимает размеры в форме "-s 1920x1080", чтобы вы могли указать точные размеры, которые вы хотите. Кажется, что изображение не обрезается, если вы укажете полные размеры.

Arkain · 10 лет назад · 1

До сих пор работает на 10.12.2. Спасибо автору поста!

k1r8r0wn · 9 лет назад · 0

есть ли способ сказать qlmanage использовать определенную плотность? человек ничего не показал.

computingfreak · 8 лет назад · 0

Размещение параметров ширины и высоты после параметра -s не сработало для меня. Все еще обрезает его до квадрата. Очень расстраивает!

Erik van der Neut · 8 лет назад · 3

прозрачность не работает

theonlygusti · 8 лет назад · 1
tst ответил 16 лет назад
T 2 106
82

I found that for me the best tool for the job is rsvg-convert.

It can be found in brew with brew install librsvg and is used like this:

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

(This example creates a 32px high png. The width is determined automatically.

Это единственный, который работал для меня на Маверикс и https://commons.wikimedia.org/wiki/File:Windows_logo_-_2012_derivative.svg

Aron Ahmadia · 12 лет назад · 0

На самом деле это работает, в то время как ImageMagick convert выдавал ошибки и не смог скрыть сложный SVG

Brice · 11 лет назад · 0

На сегодняшний день это лучшее решение, которое я нашел для OS X Yosemite +1!

Greg Martin · 11 лет назад · 6

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

sudo · 11 лет назад · 0

Если некоторые из ваших SVG не работают с этим (и вы уверены, что файлы не являются неисправными), рассмотрите возможность сообщения об ошибке в проекте librsvg (https://wiki.gnome.org/Projects/LibRsvg).

Ahti · 11 лет назад · 0

Этот ответ работал для меня в OS X 10.10, а ответ на imagemagick - нет.

mchen.ja · 11 лет назад · 0

@sudo Попробуйте нормализовать SVG, используя hxnormalize из brew install html-xml-utils.

Lenar Hoyt · 10 лет назад · 0

Лучшее решение, потому что он использует очень хороший растеризатор с точки зрения разрешения.

Paul-Sebastian Manole · 9 лет назад · 0

И помните, что automator - ваш друг, если вам нужно сделать целую кучу: запросить элементы поиска, запустить скрипт оболочки, передавая входные данные в качестве аргумента, затем что-то вроде `` `PATH = / usr / local / bin: / bin export PATH для имени файла в "$ @" do finalFilename = "$ .png" rsvg-convert -h 300 "$ filename"> "$ finalFilename" done```

Zoë Smith · 9 лет назад · 0

rsvg-convert имеет параметры-d (x-dpi)и-p (y-dpi), чтобы позволить пользователю контролировать плотность во время экспорта

computingfreak · 8 лет назад · 0

С помощью rsvg-convert результирующий .png имел правильные размеры, но изображение получилось черным, а не исходными цветами. С помощью qlmanage изображение обрезается до квадрата. Все еще ищу решение :-(

Erik van der Neut · 8 лет назад · 1

Там, где SVG имеет перекрывающиеся полупрозрачные элементы, они отображаются неправильно. FWIW Affinity Photo имеет ту же проблему.

Paul Masri-Stone · 8 лет назад · 0
Ahti ответил 12 лет назад
A 929
36

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

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

$ convert picture.svg picture.png 

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

Это * вроде * имеет графический интерфейс в display.

Ignacio Vazquez-Abrams · 16 лет назад · 0

Когда я установил ImageMagick с Fink, я не смог конвертировать svg в png - были некоторые ошибки. Оказалось, что мне нужно было также установить librsvg2-bin.

tst · 16 лет назад · 1

Если librsvg2-bin не установлен (как в OS X), это не удастся. Не удалось найти способ установить его на OS X.

John Sheehan · 14 лет назад · 0

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

Behrang · 13 лет назад · 3

Он также не конвертирует все файлы SVG правильно; по крайней мере, qlmanage получил все части изображения.

Johan · 12 лет назад · 3

Даже при использовании -density экспорт выглядит странно. Я думал, что мои SVG были низкого качества (все круги были на самом деле полигонами), и использование rsvg-convert работало намного лучше!

AsTeR · 11 лет назад · 0

Это единственный, который работает для всех SVG для меня. Качество кажется хорошим, если я что-то упустил. Я использовал плотность-600.

sudo · 11 лет назад · 0
Jessie ответил 16 лет назад
J 1 608
27

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

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

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

это работает для меня! - У меня есть больший SVG, созданный с помощью Inkscape

matheszabi · 12 лет назад · 0

Это единственный метод, который правильно сделал мой рукописный svg

Griffin · 12 лет назад · 0

Конвертировать не создает хорошие файлы PNG из SVG. Использование Inkscape - лучший способ, который я нашел до сих пор.

ol_v_er · 11 лет назад · 0

Это работает для меня, но создает очень размытые файлы.

Marcin · 11 лет назад · 0

У меня была проблема с поиском файлов, поэтому запустите его как inkscape $ (pwd) /logo.svg --export-png $ (pwd) / logo.png

Andrei · 11 лет назад · 3

@Marcin @ol_v_er Добавьте, например, --export-dpi 600, чтобы получить более высокое качество

Andrei · 11 лет назад · 0
seb ответил 13 лет назад
S 389
12

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

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

шаги:

  1. Загрузите или поместите svgфайл на жесткий диск, скажем,somefile.svg
  2. Теперь в той же папке просто создайте html-файл tmp.html, содержащий следующую строку:<img src="somefile.svg">
  3. Теперь откройте этот HTML-файл в Google Chrome
  4. Вы должны увидеть изображение. Теперь просто щелкните правой кнопкой мыши на изображение и выберите «Копировать изображение»
  5. Перейдите в приложение Mac Preview и выберите "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 до максимально допустимого на экране.

Умное решение!

Manu · 10 лет назад · 0

This actually produces the best results for me since it renders exactly the same as the browser.

Jason Haslam · 9 лет назад · 0

полученное изображение было очень плохим для меня

Michael · 8 лет назад · 0

Гениально :), но для очень больших SVG разрешение получающегося изображения слишком низкое, как упомянул @Michael.

waldyrious · 7 лет назад · 0
太極者無極而生 ответил 10 лет назад
4 207
5

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

mogrify -format png *.svg

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

mogrify также является частью ImageMagick.

ShreevatsaR · 15 лет назад · 3

Работает отлично, но зверски медленно.

Meekohi · 12 лет назад · 0

-1? Кто-то думает, что это не полезно? В чем ошибка?

DefenestrationDay · 12 лет назад · 0

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

Dae · 10 лет назад · 0
DefenestrationDay ответил 15 лет назад
D 199
3

Try Apache Batik.

java -jar batik-rasterizer.jar FILES 

It also supports batch conversion and has many other useful options.

Behrang ответил 13 лет назад
B 952
3

I have made svgexport using node/npm for this, it is cross-platform and can be as simple as:

svgexport input.svg output.png 

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

Marko Grešak · 9 лет назад · 0

Результирующее разрешение не было большим для меня.

Michael · 8 лет назад · 0
Ali Shakiba ответил 11 лет назад
A 151
2

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

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

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

Для справки, это можно установить с помощью brew cask install phantomjs. В моей установке папка примеров находилась в пути / usr / local / Caskroom / phantomjs / 2.1.1 / phantomjs-2.1.1-macosx / examples /.

waldyrious · 7 лет назад · 0
Stofke ответил 9 лет назад
S 146
1

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

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

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

Даже с плотностью преобразование не генерирует такое же четкое изображение, как векторное изображение. Попробуйте вместо этого Apache Batik.

Behrang · 13 лет назад · 2
BersekerBernhard ответил 14 лет назад
B 19
Загрузка ответов…