es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible hacer autotracing de PNG a SVG en Inkscape, pero desde la línea de comandos?

Quiero automatizar las conversiones de “raster a vector”. PNG a SVG. (la mayoría de las preguntas aquí en SO son al revés)

He intentado la antigua herramienta de línea de comandos autotrace en Linux, pero no pude hacer que se ejecutara. He intentado instalar un paquete y compilarlo desde el origen. Nada.

Luego me di cuenta de que Inkscape tiene “autotrace” ahora integrado en su código base. Me gustaría convertir simples bocetos de PNG a SVG.

Y quiero hacer esto en un bucle for en Bash, con diferentes configuraciones de autotrace (número de pasadas; ignorar Speckles con ancho máximo de X píxeles) etc.

He intentado la opción de línea de comandos “<acción>”

inkscape –without-gui –actions=”file-open:mi.png”

y esto muestra el pequeño diálogo “importación de imagen de mapa de bits png”, esperando a que confirme.

También he intentado la opción de línea de comandos

inkscape –with-gui –verb=”FileImport:mi.png”

y esto abre el gran diálogo “Seleccione el archivo a importar” (ignorando mi argumento –verb)

En este punto me rendí.

Quiero que Inkscape importe una imagen PNG, la autotrace con algunas configuraciones, la guarde como SVG. Tal vez, antes de guardar, duplique la capa trazada, bloquee la capa de fondo importada, cambie el nombre de las capas de ruta-12345 a “tracesettings-x-y-z”, etc.

(mi objetivo final es permutar las configuraciones de trazado, para encontrar buenas para mi caso de uso, pero ese no es el foco de esta pregunta)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en SVG, scripting y conversión de imágenes, recomendaría explorar más opciones de la CLI de Inkscape para lograr tu objetivo. Puede que quieras intentar usar la opción --select para seleccionar la imagen PNG importada antes de ejecutar el comando de trazado automático. Además, la opción --export-plain-svg se puede usar para guardar el SVG resultante sin ningún metadato adicional.

    Un posible script de Bash podría verse así:

    #!/bin/bash
    
    for file in *.png; do
      inkscape --without-gui \
        --actions="file-open:$file;select-all;ObjectToPath;StrokeToPath;TraceBitmap;selection-raise-to-top;selection-toggle-lock;EditSelectByName;RenameCurrentObject('tracesettings-x-y-z');selection-toggle-lock;ExportPlainSvg;file-close"
    done
    

    Este script recorrerá todos los archivos PNG en el directorio actual, abrirá cada archivo en Inkscape y realizará las siguientes acciones:

    1. Seleccionar todos los objetos (que debería ser solamente la imagen PNG importada en este punto)
    2. Convertir los objetos a rutas
    3. Convertir todos los trazos en rutas
    4. Trazar el bitmap utilizando la configuración deseada (puedes agregar esta configuración después de TraceBitmap)
    5. Subir la selección al frente
    6. Bloquear la selección (para evitar modificarla accidentalmente)
    7. Seleccionar la ruta trazada (usa EditSelectBy(1) para el primer objeto, 2 para el segundo, etc.)
    8. Cambiar el nombre del objeto actual a tracesettings-x-y-z
    9. Bloquear la selección nuevamente (para evitar modificarla accidentalmente)
    10. Exportar el archivo SVG (usando ExportPlainSvg)
    11. Cerrar el archivo

    Es posible que debas ajustar el parámetro --actions para adaptarlo a tu caso de uso específico, pero esto debería darte un buen punto de partida. También puedes probar usando la opción --query-all para explorar todos los verbos y opciones disponibles en la CLI de Inkscape. ¡Buena suerte!

Comments are closed.