2012-03-02 17 views
45

Desidero convertire le immagini SVG in file PNG con sfondo trasparente e bordi con anti-alias (utilizzando i pixel semitrasparenti). Sfortunatamente non riesco a convincere ImageMagick a fare l'anti-aliasing, i bordi sembrano sempre terribili. Ecco quello che ho provato:Converti SVG in PNG trasparente con antialiasing, utilizzando ImageMagick

convert +antialias -background transparent in.svg -resize 25x25 out.png 

Tutte le idee o un diverso strumento a riga di comando che potrei usare?

risposta

48

Inkscape farà questo:

inkscape \ 
    --export-png=out.png --export-dpi=200 \ 
    --export-background-opacity=0 --without-gui in.svg 
+1

La prima soluzione che ho trovato che mantiene la tavolozza dei colori di alcuni SVG, ad es. il logo di Apache NiFi (https://nifi.apache.org/assets/images/apache-nifi-logo.svg). – timss

15

In realtà, leggendo la documentazione imagemagick:

-antialias

Attiva/Disattiva del rendering di pixel anti-aliasing in sede di elaborazione i caratteri e le linee . Per impostazione predefinita, gli oggetti (ad esempio testo, linee, poligoni, ecc.) Sono antialias quando disegnati. Utilizzare + antialias per disabilitare l'aggiunta di pixel del bordo antialiasing. Questo ridurrà quindi il numero di colori aggiunto ad un'immagine solo per i colori che vengono disegnati direttamente. Cioè, nessun colore misto viene aggiunto quando si disegnano tali oggetti.

le + antialias sarà infatti disabilitare l'antialiasing.

59

Come nota a margine, ho scoperto che ottenere la trasparenza era un po 'complicato. Invece di usare trasparente, ho dovuto usare nessuno.

convert -background none in.svg out.png 
+0

Almeno in questo momento (6.8.6), funziona anche con _transparent_. –

+3

Sia "nessuno" che "trasparente" creano per me uno sfondo bianco opaco. Non trasparente Sto usando 6.8.8-3 su Mac – petrsyn

+2

'-background none' ha funzionato per me, ImageMagick 6.8.6-6 su un mac – commonpike

9

Il modo in cui ho imparato a fare questo era dalla metodologia trovato qui: How to convert a .eps file to a high quality 1024x1024 .jpg?

E 'la stessa idea di @ Halfer soluzione inkscape --to sollevare la DPI prima - ma si può realizzare la stessa cosa nel solo imagemagick usando l'opzione -density.

convert -density 200 in.svg -resize 25x25 -transparent white out.png 
Problemi correlati