¿Cómo convertir por lotes mapas de bits a SVG?

13

Tengo muchos mapas de bits en escala de grises que necesito convertir a un formato vectorial, como SVG. He estado usando Inkscape, lo que da buenos resultados, pero esto toma alrededor de 10-15 minutos para abrir, convertir y guardar un archivo. ¿Existe una herramienta de línea de comandos o lote que pueda convertirlos?

Pueblo
fuente
es posible que desee echar un vistazo potracetambién.
Stéphane Chazelas
También es posible utilizar Inkscape como enlace de

Respuestas:

19

potrace

Encontré este ejemplo en SO en un Q&A titulado: ¿Cómo convertir una imagen JPEG a formato SVG usando ImageMagick? . Una de las respuestas sugeridas potrace.

$ convert input.jpg output.ppm
$ potrace -s output.ppm -o svgout.svg

Resultados

           ss # 1             ss # 2

Al mirar el potracesitio web, aparentemente puede ir directamente de BMP a SVG.

$ potrace -s input.bmp -o output.svg

autotrace

Otra opción para potracees autotrace.

$ autotrace -output-file ouput.svg -output-format svg --color-count 4 input.bmp

Es probable que tengas que jugar con el --color-countpara obtener una imagen que se ajuste a tus necesidades.

Resultados

                                                 ss # 3

¿Cuál usar?

De estos 2 realmente depende del material de origen. Si está convirtiendo imágenes, potracees probable que sea la mejor opción. Para material no fotográfico, como fuentes y objetos inanimados, como paisajes que incluyen cosas como carreteras, luego autotracecon su --centerlineinterruptor.

Si bien no es óptimo para las fotos, hace un buen trabajo en imágenes lineales e imágenes tipo póster. No le va muy bien con el color. Autotrace tiene algunas características que no están disponibles en el cuadro de diálogo Potrace incorporado en Inkscape. Por ejemplo, hay un interruptor de línea central que es especialmente útil para trazar carreteras (en mapas) o caracteres de fuente.

Conversiones por lotes

Puede ajustar cualquiera de estos comandos en un bucle for en Bash, lo que facilitará el trabajo de realizar tareas de conversión masiva.

$ for i in *.bmp; do <CONVERSION TOOL> ... "$i"; done

Referencias

slm
fuente
No es necesario almacenar un archivo intermedio desde el JPEG. como una frase que utilicé:convert -channel RGB -compress None input.jpg bmp:- | potrace -s - -o output.svg
Louis Maddox
9

Autotrace

Puedes probar el autotrace .

Usando el siguiente comando obtienes los siguientes resultados:

autotrace --output-format svg --output-file output.svg --color-count 4 imgsrc.jpg

Tuve que tomar una captura de pantalla de la svg resultante y guardarla como png para mostrar la salida.

Aquí hay una imagen fuente jpg:

fuente del cráneo

Aquí está la imagen resultante:

cráneo convertido

rking
fuente
7

Normalmente, hago todas mis tareas de manipulación de imágenes con convertImageMagic, pero no puedo hacer que funcione bien con archivos svg. Sin embargo, puedes usarlo inkscapedesde la línea de comandos:

for i in *bmp; do inkscape -f "$i" -l "$i.svg"; done

Eso creará archivos llamados foo.bmp.svg. Para obtener los nombres correctos, intente esto:

for i in *bmp; do inkscape -f "$i" -l "${i%.bmp}.svg"; done

El problema con este enfoque es que, al menos en mi sistema, aparece un cuadro de diálogo gráfico molesto preguntando si quiero vincular o incrustar la imagen:

                                 ingrese la descripción de la imagen aquí

Entonces, aún debe hacer clic en Aceptar manualmente, pero aún es mucho más rápido que hacerlo archivo por archivo.

Las imágenes de salida son idénticas por lo que puedo decir:

   ingrese la descripción de la imagen aquí


En teoría, tanto converty rsvg-convertdebe ser capaz de hacer esto, pero no pude conseguir que funcione bien en mis imágenes en los pocos minutos que pasé tratando. Sin embargo, vale la pena mirar a ambos.

terdon
fuente
No soy positivo, pero en el sitio web de Inkscape dice que ahora se ha potraceincrustado, así que me pregunto si de todos modos solo está usando esa herramienta. cita: "Potrace ahora está incrustado en Inkscape. No es necesario ejecutarlo por separado". - wiki.inkscape.org/wiki/index.php/Tools
slm
55
Sospecho que Inkscape simplemente incrustará la imagen de mapa de bits dentro del SVG, de ahí su aspecto idéntico.
user2428118
@ user2428118 Sospecho que tienes razón. Eso puede o no ser un problema dependiendo de qué es exactamente lo que desea hacer con estas imágenes.
terdon
1

potracees la herramienta para eso. Puede procesarlos en masa, pero primero debe convertir las imágenes a monocromo:

ls ./*.jpg | xargs -L1 -I {}  convert -monochrome {} {}.ppm
ls -1 ./*.ppm | xargs -L1 -I {} potrace {} -r 300 -b svg -o {}.svg

Instalar en Ubuntu:

sudo apt install potrace

Si desea convertir imágenes que no son monocromas, Inkscapetiene una base de herramienta de trazado en potrace que admite múltiples colores, primero convierte la imagen en capas de color y luego las traza y combina el resultado.

Para usar el trazador, cargar o importar una imagen, selecciónela y seleccione el elemento Ruta > Trazar mapa de bits , o Shift+ Alt+B.

Ver

Tutorial aquí!

Eduard Florinescu
fuente