Tengo algunas imágenes que hice en inkscape con .svg
extensión. Estas imágenes tienen varios tamaños (256*265, 512*512, etc.) en píxeles.
¿Cómo puedo cambiar el tamaño de todas estas imágenes a la vez en Linux?
Encontré la solución a mi problema, la forma de hacerlo es usandorsvg-converter
y después de buscar en 3W encontré este script aquí
todo lo que necesita es hacer que este script sea ejecutable y ejecutarlo seguido de un nuevo tamaño para su .svg
(s) archivo(s)
Sin conocer su razón para querer hacer esto, mi reacción inicial es no hacerlo .
El tamaño de un archivo SVG es realmente una sugerencia: están diseñados para aumentar y reducir su tamaño (por lo tanto , gráficos vectoriales escalables ). La altura y el ancho de un archivo SVG para la mayoría de los usos prácticos no importan. Si desea que la imagen sea más grande (por ejemplo) en una página web, puede configurar los atributos de alto y ancho. Si está exportando a un archivo PNG, puede establecer las dimensiones como desee. De hecho, ni siquiera se requiereheight
que los atributos y estén allí. Si la altura o el ancho no se especifican en el elemento raíz , simplemente se establecerán de forma predeterminada en 100 %.width
<svg>
Jugar con el alto y el ancho realmente pierde uno de los grandes beneficios de los archivos SVG, que es la escalabilidad.
Puede haber casos en los que realmente necesite establecer la altura y el ancho de un archivo SVG, pero en mi opinión, esto generalmente se debe a una limitación en su flujo de trabajo o herramientas.
Los archivos SVG son solo archivos XML: puede abrir uno en un editor de texto y echar un vistazo. Puede manipularlos como lo haría con cualquier otro archivo XML. Mozilla Dev Network tiene una referencia fantástica para aprender sobre el lado XML de los archivos SVG.
Para manipular un archivo XML, el método tradicional es usar XSL, un lenguaje de hojas de estilo para transformar un archivo XML en otra cosa (generalmente otro archivo XML).
Cree un archivo de texto llamado scale-svg.xsl e inserte el siguiente contenido:
<xsl:stylesheet version="1.0">
<xsl:output method="xml"/>
<xsl:template match="svg:svg">
<xsl:copy>
<xsl:copy-of select="svg:metadata|svg:defs|sodipodi:namedview"/>
<xsl:element name="svg:g">
<xsl:attribute name="transform">
<xsl:value-of select="concat(concat('scale(',$scale),')')"/>
</xsl:attribute>
<xsl:copy-of select="*[not(svg:metadata|svg:defs|sodipodi:namedview)]"/>
</xsl:element>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Ahora necesita aplicar la hoja de estilo a un archivo (o archivos) SVG. Hay muchos programas XSLT disponibles. Si está utilizando Linux, xlstproc
probablemente ya esté instalado.
# This command will scale small.svg up by 3x
$ xsltproc --stringparam scale 3 scale-svg.xsl small.svg>big.svg
# This command will scale all SVG files in the current directory
$ for f in *.svg; do xsltproc --stringparam scale 3 scale-svg.xsl $f>3x_$f; done
Si desea hacer algo diferente (como manipular la altura y el ancho del documento SVG en lugar de escalarlo), deberá modificar el archivo XSL para satisfacer sus necesidades. Hay muchos tutoriales sobre XSL, como este en W3Schools .
También hay otros enfoques que usted toma. Una búsqueda rápida en Google también encontró svg-resizer , que es un enfoque basado en JavaScript que usa rsvg. Probablemente también pueda hacer que ImageMagick haga esto también.
Si bien Inkscape tiene capacidades de procesamiento por lotes, no creo que pueda hacer esto (nuevamente, las dimensiones de un archivo SVG son sugerencias, por lo que la utilidad es limitada).
Inkscape tiene la capacidad de automatizar la exportación de archivos SVG en diferentes tamaños. Las opciones de la línea de comandos de Inkscape tienen la capacidad de establecer manualmente la altura y el ancho al exportar un archivo PNG.
scale-svg.xsl:1: namespace error : Namespace prefix xsl on stylesheet is not defined
Joonas
whisky