Edición automática de imágenes con Python

Como parte de nuestro trabajo en la OfiLibre, generamos muchas imágenes personalizadas para actividades, vídeos y materiales de difusión. Para no depender de herramientas de diseño gráfico pesadas o privativas, hemos desarrollado una serie de scripts en Python que nos permiten automatizar la creación de imágenes con un estilo coherente y profesional.

Estas herramientas están basadas en la librería Pillow, también conocida como PIL (Python Imaging Library), que permite manipular imágenes fácilmente desde código.

¿Qué podemos hacer con estos scripts?

  • Crear imágenes a partir de plantillas gráficas.
  • Insertar texto en distintas posiciones, con distintos tamaños, colores y fuentes.
  • Adaptar el diseño según el número de personas o el tipo de contenido.
  • Usar fuentes libres descargadas automáticamente desde Google Fonts.
  • Exportar las imágenes en formato PNG, listas para usar en la web o en redes sociales.

Herramienta general: generador de imágenes dinámico

Creamos una herramienta base que genera cualquier tipo de imagen a partir de una plantilla y un archivo de configuración YAML. Esta herramienta permite definir de forma declarativa todos los textos que aparecerán (por ejemplo: título, subtítulo, pie de página), su posición, fuente, color y alineación.

Basta con tener una imagen base (por ejemplo, una plantilla de fondo), y un archivo config.yml donde definimos qué textos deben aparecer y cómo deben hacerlo.

Esto nos ha resultado especialmente útil para generar rápidamente banners, anuncios o tarjetas sin necesidad de abrir un programa de diseño.

Para consultar más detalles, visitar este repositorio de GitLab, en la carpeta automatizacion/edicion-imagenes/.

Sin embargo, debido a la complejidad que puede suponer rellenar el archivo config.yml, especialmente en lo que a la posición (coordenadas) de los elementos se refiere, hemos diseñado scripts adaptados a dos casos de uso frecuentes en la oficina: la generación de miniaturas para los cafés y la generación de miniaturas para los materiales pertenecientes a las asignaturas en abierto. En esos scripts adaptados las coordenadas, colores, tamaños y fuentes de los elementos ya vienen prefijados, de manera tal que sólo se indica su contenido.

Caso 1: miniaturas para Café con OfiLibre

La serie de vídeos Café con OfiLibre necesitaba miniaturas coherentes entre episodios, pero flexibles para adaptarse a diferentes combinaciones de presentadores e invitados.

Desarrollamos un script que lee una plantilla de imagen y un archivo de configuración con el título, fecha y nombres, y genera la miniatura automáticamente.

Según el número de personas, el script elige entre varias plantillas predefinidas. Si hay 3 presentadores y ningún invitado, se usa una plantilla distinta que si hay 2 presentadores y un invitado.

Esto nos permite mantener una línea gráfica uniforme con el mínimo esfuerzo, y facilita la generación de imágenes cuando hay muchos episodios seguidos.

Para consultar más detalles, visitar este repositorio de GitLab, en la carpeta automatizacion/miniaturas-cafes/.

Caso 2: miniaturas para asignaturas en abierto

Otro uso que le dimos fue la generación de portadas para los vídeos de nuestras asignaturas en abierto, un proyecto que difunde materiales docentes libres.

Cada portada incluye:

  • El título del vídeo (por ejemplo, “Tema 3: Introducción al marketing digital”).
  • El nombre de la asignatura.
  • El grado al que pertenece.
  • Una sección de licencia, con mención a Creative Commons y a la autoría.

Todo esto se configura en un archivo config.yml, y el script genera automáticamente una imagen en alta calidad con toda la información bien posicionada y con tipografía legible. Además, se adapta a cualquier tamaño de plantilla, manteniendo el centrado del contenido.

Para consultar más detalles, visitar este repositorio de GitLab, en la carpeta automatizacion/miniaturas-asignaturas-abierto/.

Ventajas de este enfoque

  • Ahorro de tiempo: No hace falta abrir ningún programa de edición, solo ajustar los textos y ejecutar un comando.
  • Consistencia visual: Todas las imágenes mantienen un diseño unificado.
  • Uso de fuentes libres: Usamos tipografías de Google Fonts, descargadas dinámicamente, lo que evita depender de fuentes privativas o tener que instalarlas manualmente.
  • Adaptabilidad: El sistema se puede modificar fácilmente para nuevas campañas o formatos.

Cómo empezar

  1. Asegúrate de tener Python 3 instalado.
  2. Clona el repositorio o descarga los scripts.
  3. Instala las dependencias:
pip install -r requirements.txt
  1. Edita el archivo config.yml con los valores que quieras usar.
  2. Ejecuta el script correspondiente:
python <nombre_script>.py

Posibles mejoras

  • Soporte para imágenes redimensionables automáticamente.
  • Inclusión de logotipos o imágenes adicionales (por ejemplo, avatars).
  • Generación de múltiples versiones para distintas plataformas (web, redes, impresión).

El uso de herramientas libres como Python y PIL no solo nos ahorra tiempo, sino que nos permite tener un mayor control sobre nuestros materiales, adaptarlos con libertad y compartirlos bajo licencias abiertas.