2012-03-02 28 views
45

Quiero convertir imágenes SVG a archivos PNG con fondo transparente y bordes suavizados (utilizando píxeles semitransparentes). Desafortunadamente no puedo hacer que ImageMagick haga el anti-aliasing, los bordes siempre se ven terribles. Esto es lo que probé:Convertir SVG a PNG transparente con antialiasing, utilizando ImageMagick

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

¿Alguna idea o una herramienta de línea de comando diferente que podría utilizar?

Respuesta

48

Inkscape hará esto:

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

La primera solución que he encontrado mantiene la paleta de colores de algunos SVG, p. Ej. el logo de Apache NiFi (https://nifi.apache.org/assets/images/apache-nifi-logo.svg). – timss

15

En realidad, la lectura de la documentación de ImageMagick:

-antialias

Activar/Desactivar de la prestación de píxeles-aliasing contra la elaboración fuentes y líneas . De forma predeterminada, los objetos (por ejemplo, texto, líneas, polígonos, etc.) se suavizan cuando se dibujan. Use + antialias para deshabilitar la adición de píxeles de borde antialiasing. Esto reducirá el número
de colores añadidos a una imagen para solo los colores que se dibujan directamente. Es decir, no se agregaron colores mezclados al dibujar tales objetos.

+ antialias desactivarán el antialiasing.

59

Como nota al margen, encontré que obtener transparencia era un poco complicado. En lugar de usar transparente, tuve que usar ninguno.

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

Al menos en este momento (6.8.6), también funciona con _transparent_. –

+3

Tanto 'ninguno' como 'transparente' crean un fondo blanco opaco para mí. No transparente. Estoy usando 6.8.8-3 en Mac – petrsyn

+2

'-background none' trabajado para mí, ImageMagick 6.8.6-6 en mac – commonpike

9

La forma en que aprendí a hacer esto era de la metodología encontrar aquí: How to convert a .eps file to a high quality 1024x1024 .jpg?

Es la misma idea que la solución de @ halfer con inkscape --a levantar el DPI primero - pero puede lograr lo mismo en solo imagemagick usando la opción -density.

convert -density 200 in.svg -resize 25x25 -transparent white out.png 
Cuestiones relacionadas