cómo rasterizar un SVG sin suavizado

Hice un mapa en Inkscape y ahora necesito cambiarlo a un mapa de bits o .png. El mapa será interpretado por un programa informático que buscará los colores exactos, por lo que los bordes deben ser nítidos. cuando exporto un .png con inkscape, uso un convertidor de archivos en línea o incluso tomo una captura de pantalla, siempre aparece suavizado. ayuda.ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Hmm... no parece que Inkscape ofrezca una opción de alias al exportar a ráster. Puede intentar abrir el SVG en una aplicación de trama (como PS) y ver si le ofrece una opción de alias allí.
el Photoshop 7.0 que tengo no parece tener la capacidad de abrir archivos SVG. No tengo ningún otro programa que pueda hacerlo. si hay programas gratuitos que podrían funcionar, estoy interesado en saber cuáles son.
En cuanto a las aplicaciones de trama, GIMP es de código abierto. Paint.net es gratuito. Sin embargo, no estoy seguro de si alguno admite la apertura de SVG.
Parece que podría haber una manera de hacer esto en el navegador: stackoverflow.com/questions/16889078/…
Ah, y finalmente... una solución puede ser tomar la captura de pantalla, ponerla en PhotoShop y luego usar el filtro/herramienta "Posterizar" de PhotoShop para reducir la paleta de colores a solo los colores sólidos que desea usar.
puede imprimir en pdf y dejar que ghostscript lo rasterice.

Respuestas (5)

La versión de desarrollo de Inkscape (próxima versión 0.91) tiene una opción de suavizado global en la ventana Propiedades del documento, que también debería funcionar para la exportación. Busque "Versiones de desarrollo" en la página de descarga:

http://www.inkscape.org/en/download/

gracias, sabes cuanto falta para que salga? No lo vi en el sitio.
La fase actual es "Frost". Puede ver el progreso hacia el lanzamiento aquí: inkscape.org/en/develop/next-release Creo que debería lanzarse dentro de los próximos 5 meses.
Guau. ¡Están saltando de .48 a .91! Por supuesto, eso es menos de 'la mitad de una versión', pero sigue siendo una gran actualización en el mundo de Inkscape. ¡Versión 1.0 aquí vamos!
Lamentablemente no tiene ningún efecto en la exportación...
Tampoco funcionó para mí al exportar como archivo PNG.
A veces, esta alternancia no funciona porque el estilo de su escritorio en las preferencias se contamina con propiedades de representación de formas, aún no sé qué causa esto. Pruebe con un nuevo archivo de preferencias y un nuevo documento.
Esta alternancia no tiene ningún efecto para mí, no importa lo que haga. Incluso cuando hago una imagen completamente nueva, incluso antes de exportar.

Inkscape 0.91 y superior tiene la capacidad de alternar el antialiasing. Se puede acceder a esto a través de la ventana Propiedades del documento (Shift+Ctrl+D). Cuando está activado, que es el valor predeterminado, esta imagen de una matriz de triángulos se ve así.

ingrese la descripción de la imagen aquí

Cuando está apagado, la imagen se ve más suave.

ingrese la descripción de la imagen aquí

Como han mencionado otros, esto actualmente no tiene ningún efecto en la exportación png. El antialiasing aún está activado y los espacios entre los triángulos aún son visibles.

Lo que está haciendo Inkscape cuando deshabilita el antialiasing es agregar shape-rendering="crispEdges"al archivo. Abra su SVG en un editor de texto y mire alrededor de la línea 19 y debería verlo.

ingrese la descripción de la imagen aquí

Afortunadamente, esta etiqueta se lee y se adhiere al importar el SVG a GIMP. GIMP puede importar un SVG y establecer la resolución de importación, lo que significa que puede escalar su png en la importación para que tenga el tamaño deseado. Lo recortará hasta los límites de la página.

ingrese la descripción de la imagen aquí

Ahora puede guardar la imagen y el antialiasing se desactivará.

ingrese la descripción de la imagen aquí

Esto ha sido reportado como un error un par de veces:

¡Perfecta explicación! Para la ilustración, una forma diagonal o redonda habría hecho mucho más visible el efecto.
Descubrí que la carga en GIMP no funcionaba a menos que buscara todas las instancias shape-rendering:autoen el SVG y las convirtiera a crispEdges. Resulta que muchos de los caminos (quizás todos) tenían la :autoespecificación en su estilo.
Trabajó para mí con GIMP en un dibujo complejo. ( shape-renderingsolo apareció una vez en el SVG a diferencia de lo que encontró MutantBob). Además, obtuve exactamente los mismos resultados de ImageMagick (la misma biblioteca que GIMP, estoy seguro): tenga en magick -density 96 image.svg image.pngcuenta que magick +antialias ...aún no funciona con SVG y, por lo tanto, esta propiedad de documento de Inkscape debe configurarse para controlar los alias tanto con GIMP como con IM (y IM debería usar esta información para solucionarlo).

Una solución simple es exportar a PDF y luego usar Ghostcript en el PDF resultante. Usando una imagen de fresa de Openclipart y el comando

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m \
   -r72 -dGraphicsAlphaBits=1 \
   -sOutputFile=image.png image.pdf 

Obtengo el siguiente resultado.

Imagen de fresa no antializada. Imagen de fresa no antializada ampliada.

Si su imagen también incluye texto, deberá agregarlo -dTextAlphaBits=1también. Cambie -r72a un valor diferente para cambiar la escala de la imagen.

Seguro que es una forma indirecta de hacerlo, pero Dios mío si no funcionó.
Para hacer lo mismo con ImageMagick: magick +antialias -density 72 image.pdf image.pngO, en un solo paso desde SVG: inkscape --export-pdf=- image.svg | magick +antialias -density 72 pdf:- image.pngEsto también funciona mejor con efectos de línea que hacerlo en dos pasos. Tenga en cuenta, también, que esto produce un alias ligeramente diferente que guardar el SVG con la propiedad "Usar antialiasing" desactivada ( shape-rendering="crispEdges"), y luego usar: magick -density 72 image.svg image.pngTenga en cuenta que magick +antialias...aún no funciona con SVG, pero sí con archivos PDF, como se muestra.

También puede usar la shape-renderingpropiedad de SVG para hacer que los bordes sean nítidos.

En SVG XML que se parece a:

<svg:something shape-rendering="crispEdges" ... />

En la interfaz de usuario de Inkscape, puede configurar esto manualmente usando el Editor XML ( Ctrl+ Shift+ X) como se muestra en esta captura de pantalla:

Editor XML de Inkscape

Seleccione el nodo al que se debe aplicar la propiedad. Aquí lo estoy aplicando a un grupo de caminos. La propiedad se muestra a la derecha. Para agregarlo, replique el texto que ve en la esquina inferior derecha, luego presione Set.

¡Esto es increíble! Exactamente lo que necesitaba para una imagen en la que algunas formas deberían tener suavizado pero otras se ven mejor sin él. ¡Muchas gracias!
Esto es perfecto, pero actualmente está roto en Inkscape. gitlab.com/inkscape/inbox/-/issues/5151

Hay una biblioteca resvg escrita en Rust. Parte del proyecto es una aplicación de línea de comandos que le permitiría representar SVG como PNG. Dicha aplicación permite optimizar la velocidad en lugar de la calidad, lo que generalmente da el resultado deseado.

Puede ejecutar la aplicación de la siguiente manera, como se describe aquí por el autor.

rendersvg --shape-rendering optimizeSpeed --text-rendering optimizeSpeed --image-rendering optimizeSpeed in.svg out.png

El inconveniente es que no he encontrado ninguna versión binaria, por lo que debe compilarla desde la fuente.