Додаток командного рядка для перетворення SVG в PNG на Mac OS X


167

Чи є програми командного рядка, які можуть перетворити SVG в PNG, які працюють на Mac OS X?

Редагувати : Ділан Б добре відповів із ImageMagick. Для довідки, щоб встановити ImageMagick з підтримкою SVG на Mac OS X за допомогою MacPorts

port install imagemagick +rsvg

2
Я знайшов спосіб, якщо у вас є Google Chrome ... і немає необхідності встановлювати інші речі: superuser.com/questions/134679/…
nopole

cairosvg.org працює для python3 і, здається, не має жодних проблем. pip3 install cairosvg
JayRizzo

Відповіді:


234

Або не встановлюючи нічого:

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

Він створить picture.svg.png шириною 1000 пікселів.

Я протестував його лише на OS X 10.6.3.


38
На жаль, це затискає зображення до квадрата.
Martijn Pieters

7
А, qlmanage -tдає мініатюру, яку використовує Quick Look (у Finder тощо). Розумна ідея. На жаль, ці ескізи можуть бути помилковими, особливо коли йдеться про текст.
ShreevatsaR

7
Це створює зображення з файлом svg в 1-му квадранті. Не обрізає автоматично. Спроба конвертувати файли з іменникового проекту - бажайте, щоб це спрацювало.
Алекс Кук

7
Це рішення не враховує прозорість. Інструмент rsvg-convertу відповіді @ ahti для мене працював раніше.
БенР

3
Встановлення параметрів ширини та висоти після -sопції не працювало для мене. Ще обрізає його на квадрат. Дуже засмучує!
Ерік ван дер Нойт

107

Я виявив, що для мене найкращий інструмент для роботи rsvg-convert.

Його можна знайти в заварку з brew install librsvgі використовується так:

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

(Цей приклад створює pp висотою 32 пікселів. Ширина визначається автоматично.


Це єдиний, хто працював на мене на Mavericks and commons.wikimedia.org/wiki/…
Арон Ахмадія

Насправді цей працював, в той час як ImageMagick convertвидав помилки і не зміг приховати складний SVG
Brice

7
Це, безумовно, найкраще рішення для ОС X X Yosemite +1!
Грег Мартін

Це не вдалося для деяких моїх SVG, як не дивно. qlmanageВідповідь працював для всіх з них , але покласти білий фон, який я не хочу.
судо

1
З rsvg-convert, отриманий .png мав правильні розміри, але зображення вийшло абсолютно чорним замість оригінальних кольорів. З qlmanageзображенням обрізаємо на квадрат. Ще шукаю рішення :-(
Ерік ван дер Нойт

43

ImageMagick - надзвичайно універсальний редактор зображень командного рядка, який, мабуть, буде суперником Photoshop, якби у нього, знаєте, графічний інтерфейс. Але кому це все одно потрібно. : P

Щось подібне перетворить після встановлення .svg в .png:

$ convert picture.svg picture.png

Оригінал .svg не видалено.


Це свого роду має графічний інтерфейс, в display.
Ігнасіо Васкес-Абрамс

1
Коли я встановив ImageMagick за допомогою Fink, я не зміг перетворити svg в png - були деякі помилки. Виявилося, що мені також потрібно встановити librsvg2-bin.
tst

Якщо librsvg2-bin не буде встановлено (як на OS X), це не вдасться. Не вдалося знайти спосіб встановити це на OS X.
John Sheehan

3
Це не спрацює, якщо ви хочете змінити розмір SVG, оскільки він створює розмиті зображення.
Беранг

3
Він також не конвертує всі файли SVG; принаймні qlmanage отримав усі частини зображення.
Йоган

28

Inkscape з його командним інтерфейсом дає найкращі результати для мене:

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

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


це працює для мене! - я маю більший SVG, створений Inkscape
matheszabi

Це єдиний метод, який правильно написав моє написане svg
Griffin,

Перетворення не генерує хороші файли PNG з SVG. Використання Inkscape - це найкращий спосіб, який я знайшов поки що.
ol_v_er

Це працює для мене, але створює надзвичайно розмиті файли.
Marcin

3
У мене виникла проблема знайти файли, щоб запустити їх якinkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
Андрій

16

Гаразд, я знайшов простий спосіб зробити це на 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">

і у вас з’явиться зображення на екрані, достатньо хороший для того, щоб зробити знімок екрана - наприклад, за допомогою Mac CmdShift4або CmdShift3Mac. Переконайтеся, що ви змінюєте розмір вікна Chrome на максимально дозволеному екрані.


Розумне рішення!
Ману

1
Це фактично дає найкращі результати для мене, оскільки він робить точно такий же, як і браузер.
Джейсон Хаслам

Отримане зображення було для мене дуже поганою роздільною здатністю
Майкл

Геніальний :) але для дуже великих SVG роздільна здатність отриманого зображення занадто низька, як зазначав @Michael.
waldyrious

5

Якщо ви хочете зробити відразу багато, ви можете:

mogrify -format png *.svg

Є також варіанти зміни розміру тощо на льоту.


3
mogrifyтакож є номіналом ImageMagick.
ShreevatsaR

Працює чудово, але жорстоко повільно.
Meekohi

-1? Хтось вважає, що це не корисно? У чому помилка?
DefenestrationDay

2
Я не той, хто звернувся до уваги, але варто зазначити, що ImageMagick тупо перетворює svg в растрове зображення довільного розміру перед тим, як змінити розмір, в результаті чого розмивається вихід.
Да

4

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

java -jar batik-rasterizer.jar FILES

Він також підтримує пакетне перетворення та має багато інших корисних варіантів.


4

Я зробив svgexport, використовуючи для цього node / npm, він є крос-платформним і може бути таким же простим, як:

svgexport input.svg output.png

Це було найпростішим у використанні та запам'ятанні на сьогоднішній день. Також єдиний, який дав правильний результат у моєму випадку.
Марко Грешак

отримана резолюція була для мене не великою.
Майкл

3

Ви також можете використовувати phantomjs для візуалізації svg. Перевага полягає в тому, що він робить його таким, як браузер, оскільки це в основному безголовий WebKit.

Після завантаження вам знадобиться phantomjs (бінарний) та файл rasterizer.js з папки прикладів.

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

1
Для довідки це можна встановити за допомогою brew cask install phantomjs. У моїй установці папка прикладів знаходилась у шляху /usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/.
waldyrious

2

Це те, що я використав:

brew install imagemagick --with-librsvg

Потім запустіть такі команди:

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

Сподіваюся, це допомагає.


1

Я використовую цю команду на своєму Linux. Це має працювати і для вас.

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

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


2
Навіть при щільності конверсія не генерує зображення, таке гостре, як векторне зображення. Спробуйте замість цього Apache Batik.
Беранг

1

Команда перетворення ImageMagick за допомогою деяких інших параметрів - це те, що було для мене. Ось моє пакетне рішення Bash script, яке розділяє завдання на кілька процесів, щоб використовувати всі ваші ядра! Змініть за потребою.

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

0

Як вже коментували ImageMagick робить свою справу. Я просто хотів додати крапку для GraphicsMagick , старої вилки ImageMagick, яка має деякі вдосконалення (і набагато менше роздуття залежності при встановленні через fink).


0

Ви можете виконати пакетне перетворення з усієї папки файлів 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

Ще один метод, не встановлюючи нічого. Але не в командному рядку.

  1. Відкрийте .svg файл у Safari.
  2. Натисніть alt-command-i, щоб відкрити інспектор.
  3. Клацніть правою кнопкою миші на <svg>тезі, виберіть «Знімок екрана». (Зверніть увагу, що ви не повинні збільшувати зображення.)

PS Щоб збільшити .svg зображення, якщо воно занадто мало, спробуйте відкрити .svg файл у текстовому редакторі та додати 0до кожного числа, крім мета-атрибута. Це може бути зроблено з допомогою глобальної підстановки регулярних виразів від (\d+)до $10, де $1це заповнювач для зворотного посилання, наприклад.


Напевно, ви повинні згадати, що це майже те саме, що відповідь  太極 者 無極 而 生 .
Скотт

-1

wkhtmltoimage (від проекту wkhtmltopdf) зробив це перетворенням добре:

wkhtmltoimage --zoom 2 foo.svg foo.png

ImageMagick символ CJK видає порожнім на моєму комп'ютері.


Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
Блеквуд

@Blackwood чудово, оновлено.
georgexsh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.