Tengo más de 500 imágenes que necesito marcar con una marca de agua con texto que será diferente para cada imagen. Por ejemplo, si tengo una imagen de un edificio, quiero marcar con una marca de agua el nombre o la dirección de este edificio.
Tengo la información única guardada en un archivo de Excel con el nombre del archivo de imagen.
Ahora, después de buscar durante los últimos tres días, no he encontrado una herramienta que pueda agrupar texto único de marca de agua para cada imagen.
Principalmente ejecuto Windows y me siento cómodo usando la línea de comandos para completar este proceso. También estoy dispuesto a gastar algo de dinero en una herramienta para hacer esto, por lo que no es necesario que sea gratuito y/o de código abierto.
Puede hacer esto con el comando de conversión de ImageMagick desde un archivo por lotes, le permitirá aplicar texto a un archivo, convertir el tipo, cambiar la escala, etc., todo en una sola operación; también es gratis.
p.ejconvert rose.jpg -draw "text 25,60 'By Any Other Name'" outdir/rose.jpg
Alternativamente, puede usar python , PIL (la biblioteca de imágenes de python) o Pillow (una bifurcación de PIL) y xlrd para hacer todo el trabajo automáticamente, incluida la lectura de los archivos de Excel. Estas también son herramientas gratuitas, pero requerirá un poco más de aprendizaje de su parte. Recomiendo encarecidamente hacer una copia de seguridad de todas sus imágenes antes de intentar cualquier operación en ellas.
Solo para agregar, al ver algunos de los comentarios sobre la pregunta original, todas las herramientas que menciono en la respuesta anterior son:
Tal vez demasiado tarde, pero me tropecé con esta pregunta hace 2 semanas y encontré una solución al codificar:
Me las arreglé para resolver un problema similar con bulkWaterMark y .NET, donde puedes marcar con agua texto dinámico a través de una característica llamada expresiones. Usé la versión Freeware de la herramienta y codifiqué un complemento de contexto de expresión personalizado que carga datos de un archivo xml donde se almacena la información de la imagen. Luego escribí una expresión que toma el nombre de archivo de la imagen actual como parámetro y lo busca en el archivo xml, todo hecho en C#.
El problema fue que no hay documentación SDK disponible y tampoco estoy seguro de si esta interfaz de complemento es oficialmente pública, pero solo tiene que heredar 2 o 3 clases y anular algunos métodos para inyectar su propio código en la aplicación. Funcionó a las mil maravillas entonces.
Solo necesita hacer referencia al ensamblado PMlabs.GrfX.Framework y crear su propia implementación de estas tres clases:
- ExpressionsPlugIn<TExpressionContext>
- ExpressionContext
- Expression<TExpressionContext>
La clase Expression es la función que se llama cuando se procesa una imagen. El contexto contiene varias expresiones y la clase de complemento contiene el contexto. Solo asegúrese de implementar todo en la clase de expresión abstracta, los demás son solo código de plomería.
Después de compilar el ensamblaje de su complemento, colóquelo en la carpeta bin/plugins de su instalación de bulkWaterMark.
Otra edición: publiqué un código simplificado de mi solución en Github hoy: https://github.com/barnacleboy/bulkWaterMarkExpressionPlugin
Nick Dickinson Wilde
njackson.gis
mattdm
njackson.gis
Nick Dickinson Wilde
njackson.gis