Recortar .svg
archivos en la línea de comando es simple:$ inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose *.svg
Necesito hacer lo contrario. Quiero encajar el dibujo en un 64 x 64
lienzo de puntos (ya configurado en todos los .svg
archivos). Desafortunadamente, Inkscape no proporciona un FitDrawingToCanvas
comando. Además, el accesorio debe mantener la relación de aspecto del dibujo.
Si importa: estoy usando Ubuntu con muchas ganas.
Encontré una manera de hacer esto en esta pregunta: Inkscape - Centrar el dibujo en la página a través de la línea de comando/terminal
Con "foo.svg" como imagen para editar:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit foo.svg
Para editar todas las imágenes svg en el directorio actual:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileClose *.svg
Pero este segundo comando abre un montón de ventanas, lo que hará que su computadora se bloquee si está editando demasiadas imágenes. Solo para Linux , este comando funcionará mejor:
for img in $(ls *.svg) ; do inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; done
Para el comando anterior, si alguno de los archivos son enlaces simbólicos, Inkscape editará el archivo de destino al que apunta el enlace simbólico. Si no desea que Inkscape haga esto, puede filtrar cualquier enlace simbólico con este comando:
for img in $(ls *.svg) ; do if [[ $(readlink $img) == "" ]] ; then inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; fi ; done
#!/bin/bash
# inkscape-center <file-or-directory>...
_analyse() {
if [ -d "${1}" ] ; then
_centerAll "${1}" ;
else
_center "${1}" ;
fi
}
_centerAll() {
cd "${1}" ;
for img in $(ls "*.svg") ; do
_filterSyms "${img}" ;
done
}
_filterSyms() {
if [[ $(readlink "${1}") == "" ]] ; then
_center "${1}"
fi
}
_center() {
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit "${1}"
}
for arg ; do
_analyse "${arg}" ;
done
Lo llamé inkscape-center
y lo ejecuté así:
inkscape-center <file-or-directory>
Toma tantos argumentos como quieras, así que puedes hacer algo como esto:
inkscape-center 1st.svg 2nd.svg 3rd.svg 4th.svg
Tenga cuidado : si especifica un directorio en lugar de un archivo, editará todos los archivos svg en ese directorio.
Puede usar viewBox para lograr lo que desea. No sé si hay una manera de hacer esto desde Inkscape, pero dado que SVG es un formato estándar, puede haber otra herramienta que haga el trabajo que desea. Una búsqueda rápida de "herramientas de línea de comandos svg" reveló algunos resultados interesantes, incluido este para crear íconos CSS.
Una segunda opción sería escribir su propia herramienta en el idioma de su elección para hacer esto. La esencia básica es establecer viewBox a la altura de su documento, luego establecer el ancho y la altura del documento que desee. Finalmente, configure el atributo preserveAspectRatio.
Así es como se ven las modificaciones descritas anteriormente en un documento que originalmente era de 744x1052.
<svg
width="64"
height="64"
viewBox="0 0 744 1052"
preserveAspectRatio="xMinYMin slice"
Takkat
Horacio
Stefan Endrullis
Stefan Endrullis
Stefan Endrullis