Tengo un montón de íconos SVG que me gustaría usar para que mi aplicación se desarrolle en VB.Net 2010, y dado que no tiene soporte para manejar íconos SVG, necesito convertir esos íconos en PNG o ICO, con preferencia resolución de salida. He encontrado esa herramienta de línea de comandos para Ubuntu llamada rsvgconvert
. ¿Tenemos alguna herramienta para Windows también?
command-line
conversion
icons
svg
Kushal
fuente
fuente
apt install imagemagick
ImageMagick no debe asociarse inmediatamente a cualquier tarea por lotes que involucre imágenes. Especialmente en este caso donde ImageMagick es una solución pobre para la conversión de SVG.
Mejor intente Inkscape en la línea de comando:
inkscape in.svg --export-png=out.png
fuente
-z
opción.La línea de comando no funcionó de fábrica, además quería que se convirtieran 100 archivos. Así es como lo hice funcionar con Windows 7:
instale inkscape , ¡no el portátil!
copie todos sus archivos svg en una carpeta, por ejemplo, "C: \ svgs \" allí:
crea un
convert.bat
archivo con esta línea dentro:(señale la carpeta correcta de su instalación):
abre el CMD como administrador! Para hacerlo, presione la tecla WIN, escriba cmd, haga clic derecho en "cmd.exe" y seleccione "Ejecutar como administrador".
navegue a su "C: \ svgs \" y escriba
convert.bat
- Todos los archivos svg se convertirán a PNG.Use el Explorador de Windows para buscar los archivos PNG convertidos. En mi PC estaban en la carpeta:
C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
Espero que ayude.
Como la resolución de la línea de comando solo podía establecerse fija hasta donde pude ver, terminé usando la herramienta InkscapeBatch . Allí podría establecer el DPI para aumentar todas las imágenes relativamente.
Debe especificar la configuración correcta o no funcionará. Aquí esta lo que hice:
Después de presionar "Finalizar", debe presionar el botón "Iniciar el convertidor por lotes ..." en la barra de herramientas:
fuente
%%A
(como un nombre de archivo de entrada). Además, ¿por qué supone que solo debería funcionar en modo administrador?--export-dpi=100
donde 100 es el valor de pppInkscapeBatch hace el trabajo en Windows. Requiere Inkscape .
fuente
Para la conversión de SVG a PNG, encontré que cairosvg ( https://cairosvg.org/ ) funciona mejor que ImageMagick. Pasos para instalar y ejecutar todos los archivos en su directorio.
Abra un shell de Python en el directorio que contiene sus archivos .svg y ejecute:
Esto también asegurará que no sobrescriba sus archivos .svg originales, pero mantendrá el mismo nombre. Luego puede mover todos sus archivos .png a otro directorio con:
fuente
Después de luchar con esto durante casi 2 horas, me instalé con Inkscape. Como necesitaba convertir por lotes un montón de archivos en muchas resoluciones diferentes, he creado un script Powershell. Con 106 SVG, mi computadora se congeló durante unos 5 segundos, así que tenga cuidado al usar esto.
fuente
&
operador inicia un nuevo proceso y continúa de inmediato, por lo que este script creará tantos procesos nuevos inkscape.exe como archivos svg. Resulta que esto hace que su computadora sea bastante lenta por un tiempo.| Out-Null
al final de la línea que comienza con&
él, lo obligará a ejecutar el comando inkscape.exe de uno en uno, lo que me funciona mucho mejor.Puede usar lo siguiente en Bash / Ubuntu para Windows, en la carpeta en la que tiene los SVG. Sin embargo, parece que ImageMagick primero rasteriza y luego cambia el tamaño, lo que resulta en extraños artefactos ...
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
También vea aquí la solución basada en Inscape que parece estar funcionando bien (desde otro hilo, enlace perdido):
mkdir temp; declare -a res=(16 24 32 48 64 128 256); for f in *.svg; do for r in "${res[@]}"; do inkscape -z -e temp/${f}${r}.png -w $r -h $r $f; done; resm=( "${res[@]/#/temp/$f}" ); resm=( "${resm[@]/%/.png}" ); convert "${resm[@]}" ${f%%.*}.ico; done; rm -rf temp;
fuente
find -name "*.svg" -exec inkscape {} -e {}.png \;
Aunque prefiero esta versión:ls | grep ".svg" | xargs -I file inkscape file -e file.png
porque los archivos se procesan alfabéticamente, este no es el caso cuando usofind
ImageMagick está disponible para Windows y puede convertir entre SVG y PNG e ICO (entre otros). Puede establecer el tamaño y otros atributos para el archivo de salida.
fuente
No pude encontrar un solo comando que funcionara para ejecutar un lote, así que lo hice funcionar generando una lista de archivos y creando una serie de comandos. Estas instrucciones deberían funcionar para todas las versiones de Windows. Todas las instrucciones de mecanografía excluyen las citas e incluyen todo entre ellas.
Para hacer esto, necesitará Inkscape, MS Excel o un editor de hojas de cálculo comparable y un generador de listas. Hay un pequeño generador de listas de freeware aquí: https://www.portablefreeware.com/?id=1171
Si ha hecho esto correctamente, debería tener una fila para cada nombre de archivo que se vea así: | inkscape C: \ SVG \ | Filename1.svg | --export-png = C: \ PNG \ | Filename1.png |
Espero que eso haga la vida de alguien más fácil. James
fuente
La respuesta de Kai es cercana, pero no funcionó para mí. Sin embargo, con un par de pequeños ajustes, esto funcionó a la perfección la primera vez:
convert.bat
convert.bat
en su editor de texto / código favorito e ingrese lo siguiente:FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
(Tenga en cuenta que la
inkscape.exe
ubicación debe coincidir con la ubicación del programa ejecutable en su PC; y el segundo antes--export-png
es%%A
: ese es el archivo SVG que se está convirtiendo)convert.bat
para ejecutar, y debería hacer eco de los resultados de las conversiones.Tenga en cuenta que es posible que deba actualizar su carpeta de Windows para ver los nuevos archivos, pero todos deberían haberse creado en la misma ubicación que los SVG originales.
fuente
No pude hacer que imagemagick o inkscape me funcionen por alguna razón Solo tenía 12 archivos para convertir, solo utilicé este sitio manualmente: http://svgtopng.com/ funcionó de maravilla.
fuente
Aquí hay una solución basada en ImageMagick para convertir todos los archivos svg en un directorio dado a archivos ico:
Explicación:
mogrify
: Me gustaconvert
, pero le permite procesar por lotes múltiples archivos.-format ico
: Nuestro formato de archivo de destino. Crea.ico
archivos en lugar de sobrescribir el archivo original (como lo haría mogrify de forma predeterminada).-density 1200
: Dado que no podemos especificar un tamaño de píxel objetivo en el que ImageMagick debería rasterizar el SVG (primero rasterizaría con una densidad predeterminada y luego escalar), rasterizamos el SVG con una resolución increíblemente alta (1200 ppp), para garantizar que la imagen será a escala reducida a 256x256 en lugar de mejorar la resolución.-background transparent
: El fondo se representará como transparente.-trim
: Elimina el borde existente alrededor de la imagen.-resize 256x256
: Escale la imagen, asegurándose de que el lado más largo tenga 256 píxeles, manteniendo la relación de aspecto.-gravity center -extent 256x256
: Agrande el lienzo y asegúrese de que el lado corto también tenga 256 píxeles. La imagen existente está alineada al centro. Esto es necesario porque necesitamos una imagen cuadrada como base para un archivo ICO.-define icon:auto-resize
: Incluya no solo la imagen de 256x256 sino también todas las resoluciones reducidas recomendadas (por ejemplo, 32x32) en el archivo ICO.fuente
La mayoría de las respuestas dadas aquí ignoran la parte del tamaño deseado de la pregunta. No pude obtener resultados satisfactorios
convert
al "escalar" un SVG.inkscape
hace un mejor trabajo y también preserva la transparencia de fondo.Dependiendo de su caso de uso, use una de las siguientes opciones:
inscape in.svg -d 300 -e out.png
inscape in.svg -w 800 -e output.png
inscape in.svg -h 600 -e output.png
Tenga en cuenta que especificar tanto el ancho como la altura no conserva la relación de aspecto.
Para convertir muchos archivos a la vez, ajuste lo siguiente a su caso de uso (en
bash
o compatible):fuente