Applicazione da riga di comando per convertire SVG in PNG su Mac OS X.


167

Esistono programmi da riga di comando che possono convertire un file SVG in PNG, che possono essere eseguiti su Mac OS X?

Modifica : Dylan B ha avuto una buona risposta con ImageMagick. Per riferimento, per installare ImageMagick con supporto SVG su Mac OS X usando MacPorts, fallo

port install imagemagick +rsvg

2
Ho trovato un modo se si dispone di Google Chrome ... e senza bisogno di installare alcun altro: superuser.com/questions/134679/...
nopole

cairosvg.org funziona per python3 e sembra non avere problemi. pip3 install cairosvg
JayRizzo,

Risposte:


234

O senza installare nulla:

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

Produrrà picture.svg.png che è largo 1000 pixel.

L'ho testato solo su OS X 10.6.3.


38
Purtroppo questo ritaglia le immagini in un quadrato.
Martijn Pieters,

7
Ah, qlmanage -tfornisce la miniatura utilizzata da Quick Look (nel Finder, ecc.). Idea intelligente. Sfortunatamente, queste miniature possono essere difettose, specialmente quando è coinvolto del testo.
ShreevatsaR,

7
Questo produce immagini con il file svg nel 1 ° quadrante. Non si ritaglia automaticamente. Cercando di convertire i file dal progetto sostantivo - vorrebbe che funzionasse.
Alex Cook,

7
Questa soluzione non tiene conto della trasparenza. Lo strumento rsvg-convertnella risposta di @ ahti ha funzionato prima per me.
BenR

3
Inserire i parametri di larghezza e altezza dopo che l' -sopzione non ha funzionato per me. Lo ritaglia ancora in una piazza. Molto frustrante!
Erik van der Neut,

107

Ho scoperto che per me lo strumento migliore per il lavoro è rsvg-convert.

Può essere trovato in infusione con brew install librsvged è usato in questo modo:

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

(Questo esempio crea un png alto 32 px. La larghezza viene determinata automaticamente.


Questo è l'unico che ha funzionato per me su Mavericks e commons.wikimedia.org/wiki/…
Aron Ahmadia,

In realtà questo ha funzionato, mentre ImageMagick ha convertemesso errori e non è riuscito a nascondere un SVG complesso
Brice,

7
Questa è di gran lunga la migliore soluzione che ho trovato per OS X Yosemite +1!
Greg Martin,

Ciò è fallito per alcuni dei miei SVG, stranamente. La qlmanagerisposta ha funzionato per tutti loro ma ha messo uno sfondo bianco, che non voglio.
sudo,

1
Con rsvg-convert, il .png risultante aveva le giuste dimensioni, ma l'immagine è risultata tutta nera invece dei colori originali. Con qlmanagel'immagine viene ritagliata in un quadrato. Sto ancora cercando una soluzione :-(
Erik van der Neut,

43

ImageMagick è un editor di immagini a riga di comando estremamente versatile, che probabilmente farebbe concorrenza a Photoshop se avesse una GUI. Ma chi ha bisogno di quelli comunque. : P

Qualcosa di simile al seguente convertirà un .svg in .png, dopo l'installazione:

$ convert picture.svg picture.png

Il file .svg originale non viene eliminato.


E ' una sorta di ha una GUI, in display.
Ignacio Vazquez-Abrams,

1
Quando ho installato ImageMagick con Fink, non sono riuscito a convertire svg in png - c'erano alcuni errori. Si è scoperto che dovevo installare anche librsvg2-bin.
tst

Se librsvg2-bin non è installato (come su OS X) questo non funzionerà. Impossibile trovare un modo per installarlo su OS X.
John Sheehan,

3
Questo non funzionerà bene se si desidera ridimensionare l'SVG in quanto genera immagini sfocate.
Behrang,

3
Non converte neanche tutti i file SVG correttamente; almeno qlmanage ha ottenuto tutte le parti dell'immagine.
Johan,

28

Inkscape con la sua Commandline-Interface produce i migliori risultati per me:

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

La cosa buona è che puoi specificare la dimensione esatta dei pixel dell'immagine risultante, senza dover fare confusione con la densità.


questo funziona per me! - ho un SVG più grande creato con Inkscape
matheszabi il

Questo è l'unico metodo che ha reso correttamente il mio svg scritto a mano
Griffin,

Convert non genera buoni file PNG da SVG. L'uso di Inkscape è il modo migliore che ho trovato finora.
ol_v_er,

Questo funziona per me, ma crea file estremamente sfocati.
Marcin,

3
Ho avuto un problema a trovare i file, quindi eseguilo comeinkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
Andrei

16

OK, ho trovato un modo semplice per farlo sul Mac se hai Google Chrome.

In una frase, è vedere l' svgimmagine in una pagina web (deve essere in un htmlfile), fare clic con il tasto destro sull'immagine e scegliere "Copia immagine" e incollare sull'app Anteprima.

passi:

  1. Scarica o disponi il svgfile sul tuo disco rigido, ad esempio,somefile.svg
  2. Ora, nella stessa cartella, crea un file html tmp.htmlche contenga questa riga:<img src="somefile.svg">
  3. Ora apri quel file html in Google Chrome
  4. Dovresti vedere l'immagine. Ora fai clic destro sull'immagine e scegli "Copia immagine"
  5. Vai all'app di anteprima per Mac e scegli, "File -> New from Clipboard"
  6. Ora File -> Saveil file e hai il pngfile. (o altri tipi di file).

Questo è testato sull'attuale Chrome (versione 48.0) su Mac OS X El Capitan.

Aggiornamento : non sono sicuro che sia dovuto a qualche limitazione imposta da Google Chrome. Provo solo un file SVG usando Chrome 58.0 e ottengo un'immagine minuscola dal metodo sopra. Se vedi anche questo caso, puoi anche usare

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

e sullo schermo avrai un'immagine abbastanza buona da poter fare uno screenshot , ad esempio usando CmdShift4o CmdShift3sul Mac. Assicurati di ridimensionare la finestra di Chrome al massimo consentito sullo schermo.


Soluzione intelligente!
Manu

1
Questo in realtà produce i migliori risultati per me dal momento che rende esattamente lo stesso del browser.
Jason Haslam,

l'immagine risultante è stata una risoluzione molto scarsa per me
Michael,

Geniale :) ma per SVG molto grandi, la risoluzione dell'immagine risultante è troppo bassa, come menzionato da @Michael.
waldyrious,

5

Se vuoi fare molti contemporaneamente, puoi:

mogrify -format png *.svg

Ci sono anche opzioni per ridimensionare ecc. Al volo.


3
mogrifyè anche alla pari di ImageMagick.
ShreevatsaR,

Funziona alla grande, ma brutalmente lento.
Meekohi,

-1? Qualcuno pensa che questo non sia utile? Qual è l'errore?
Defenestrazione:

2
Non sono io che ho effettuato il downgrade, ma vale la pena notare che ImageMagick converte stupidamente svg in un'immagine raster di dimensioni arbitrarie prima di ridimensionare, con conseguente sfocata resa.
Dae,

4

Prova Apache Batik .

java -jar batik-rasterizer.jar FILES

Supporta anche la conversione batch e ha molte altre opzioni utili.


4

Ho creato svgexport usando node / npm per questo, è multipiattaforma e può essere semplice come:

svgexport input.svg output.png

Questo è stato di gran lunga il più semplice da usare e da ricordare. Inoltre, l'unico che ha prodotto un risultato corretto nel mio caso.
Marko Grešak,

la risoluzione risultante non è stata eccezionale per me.
Michael,

3

Puoi anche usare phantomjs per rendere lo svg. Il vantaggio è che lo rende come un browser dato che è fondamentalmente un WebKit senza testa.

Una volta scaricato, è necessario phantomjs (binario) e il file rasterizer.js dalla cartella degli esempi.

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

1
Per riferimento, questo può essere installato con brew cask install phantomjs. Nella mia installazione, la cartella degli esempi si trovava nel percorso /usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/.
caloroso

2

Questo è quello che ho usato:

brew install imagemagick --with-librsvg

Quindi eseguire i seguenti comandi:

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

Spero che sia d'aiuto.


1

Uso questo comando sul mio Linux. Dovrebbe funzionare anche per te.

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

Ho imparato che senza l'argomento "-densità", la bitmap sarebbe molto pixelizzata. Modifica il valore della densità in base alle tue esigenze.


2
Anche con la densità, la conversione non genera un'immagine nitida come un'immagine vettoriale. Prova invece Apache Batik.
Behrang,

1

Il comando di conversione di ImageMagick, usando alcuni altri parametri, è quello che ha fatto per me. Ecco la mia soluzione batch di script Bash che divide l'attività tra più processi per utilizzare tutti i tuoi core! Modificare se necessario.

batchConvertToSVG.sh (accetta il numero di processi come argomento):

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

Come precedentemente commentato ImageMagick fa il trucco. Volevo solo aggiungere un punto per GraphicsMagick , un vecchio fork di ImageMagick che ha alcuni miglioramenti (e molta meno dipendenza se installato tramite Fink).


0

È possibile eseguire una conversione batch su un'intera cartella di file SVG in PNG. Ho usato l'interfaccia della riga di comando di Inkscape per produrre file png con una larghezza di 80px.

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

png verrà salvato con il nome originale * .png


0

Ancora un altro metodo senza installare nulla. Tuttavia, non nella riga di comando.

  1. Apri il file .svg in Safari.
  2. Premi alt-command-i per aprire l'ispettore.
  3. Fare clic con il tasto destro del mouse sul <svg>tag, selezionare "Cattura schermata". (Nota che non devi ingrandire l'immagine.)

PS Per ingrandire l'immagine .svg se è troppo piccola, prova ad aprire il file .svg nell'editor di testo e aggiungi 0ad ogni numero tranne nel meta-attributo. Questo può essere fatto mediante una sostituzione regex globale da (\d+)a $10, dove $1è ad esempio il segnaposto per riferimento indietro.


Probabilmente dovresti dire che questa è quasi la stessa della  risposta di 太極 者 無極 而 生 .
Scott,

-1

wkhtmltoimage (dal progetto wkhtmltopdf) ha fatto bene questa conversione:

wkhtmltoimage --zoom 2 foo.svg foo.png

ImageMagick rende il personaggio CJK vuoto sul mio mac.


Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
Blackwood,

@Blackwood bene, aggiornato.
georgexsh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.