Agregue marcas de agua por lotes con texto único para cada imagen

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.

¡Bienvenido a Recomendaciones de software! Necesitaremos un poco más de información para dar buenas recomendaciones aquí. Eche un vistazo a ¿Qué se requiere para que una pregunta contenga "suficiente información"? Luego edite su pregunta y vea si puede incorporar algunas de estas mejoras como mínimo: ¿Qué sistema operativo o aplicación web es aceptable? ¿Solo GUI o solo CLI o cualquiera?
Gracias, debería haberlo hecho antes de publicar. Originalmente publiqué esta pregunta en photo.stackexchange.com, pero eso pareció molestar a algunas personas allí.
@ njackson.gi No está "molesto". Era el lugar equivocado para ello.
@mattdm no estaba hablando de tu publicación. es el útil. Me refería a las otras publicaciones. Había visto muchas preguntas sobre marcas de agua y procesamiento de imágenes en ese sitio y es por eso que decidí publicar allí primero. ¡gracias por tu sugerencia!
@ njackson.gis ¿Leer el archivo de Excel es un requisito o estaría bien si tuviera que guardarlo como CSV o algún otro formato?
@NickWilde Excel no es un requisito. De hecho, estaba en el proceso de convertirlo a un formato de texto simple para poder intentar usarlo en ImageMagick.

Respuestas (2)

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.

Actualizado:

Solo para agregar, al ver algunos de los comentarios sobre la pregunta original, todas las herramientas que menciono en la respuesta anterior son:

  • Gratis (gratis)
  • Gratis (código abierto)
  • Multiplataforma, en concreto:
    • Manipulación de gráficos de línea de comandos de ImageMagik :
      • Descargas binarias para Unix, Mac OS(X), Windows y Linux
      • Fuente disponible, por lo que probablemente pueda construirlo para casi cualquier otra cosa.
    • Lenguaje de programación Python :
      • Binarios de Windows disponibles
      • Por lo general, ya está instalado en OS(S), Linux, Unix y muchos otros
      • Ídem la fuente fuente
    • PIL / Biblioteca de manipulación de imágenes de almohadas :
      • Binarios disponibles para Windows
      • Instalado desde la fuente si tiene Python/PIP en otras plataformas
    • Biblioteca de lectura XLRD Python Excel
      • La distribución de fuentes funciona en cualquier plataforma python
Steve esto hace el truco. Acabo de convertir mi Excel a .txt y luego crear un archivo por lotes para agregar el texto. ¡Gracias por señalarme este software!
Gland para escuchar que te funcionó @njackson.gis

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