Saltar al contenido

Automatiza la Conversión de Imágenes: De JPG a PNG con Fondo Transparente en Python

En este artículo te explicaré paso a paso cómo crear un script en Python que recorra todos los archivos JPG en un directorio, los convierta a formato PNG y elimine el fondo blanco, reemplazándolo por transparencia. Esta solución puede ser muy útil si trabajas con imágenes que requieren fondo transparente para diseños web o proyectos gráficos.


¿Qué hace este script?

El script realiza las siguientes tareas:

  1. Recorre el directorio: Busca archivos con extensión .jpg o .JPG en el directorio donde se ejecute.
  2. Conversión a PNG: Abre cada imagen, la procesa para eliminar el fondo blanco y la guarda en formato PNG.
  3. Eliminación del fondo blanco: Convierte la imagen a modo RGBA (para trabajar con transparencia) y modifica cada píxel que tenga valores de color altos (casi blancos) para que se hagan transparentes.

Además, se incluye un modo de depuración que muestra mensajes en la consola para confirmar el procesamiento de cada imagen.


Código en Python

Puedes copiar y pegar el siguiente código en un archivo, por ejemplo procesar_imagenes.py, y ejecutarlo en el directorio donde se encuentren tus imágenes JPG.

import os
import glob
from PIL import Image

def eliminar_fondo_blanco(imagen, umbral=240):
    """
    Convierte la imagen a RGBA y, para cada píxel que sea casi blanco,
    lo hace transparente.
    """
    imagen = imagen.convert("RGBA")
    datos = imagen.getdata()
    nuevos_datos = []
    for item in datos:
        # Si los componentes R, G y B son mayores o iguales al umbral,
        # se considera que el píxel es blanco o casi blanco.
        if item[0] >= umbral and item[1] >= umbral and item[2] >= umbral:
            nuevos_datos.append((255, 255, 255, 0))
        else:
            nuevos_datos.append(item)
    imagen.putdata(nuevos_datos)
    return imagen

def procesar_imagenes(directorio):
    print(f"Directorio actual: {os.path.abspath(directorio)}")
    archivos = glob.glob(os.path.join(directorio, "*.jpg")) + glob.glob(os.path.join(directorio, "*.JPG"))
    
    if not archivos:
        print("No se encontraron archivos JPG en el directorio.")
        return

    for ruta in archivos:
        print(f"Procesando archivo: {ruta}")
        try:
            with Image.open(ruta) as img:
                img_procesada = eliminar_fondo_blanco(img)
                # Se guarda con el mismo nombre pero con extensión .png
                nombre_base = os.path.splitext(ruta)[0]
                ruta_png = nombre_base + ".png"
                img_procesada.save(ruta_png, "PNG")
                print(f"Procesado correctamente: {ruta} -> {ruta_png}")
        except Exception as e:
            print(f"Error al procesar {ruta}: {e}")

if __name__ == "__main__":
    procesar_imagenes(".")

Explicación del código

  • Función eliminar_fondo_blanco:
    Esta función recibe una imagen y la convierte al modo RGBA para trabajar con la transparencia. Luego, recorre cada píxel y, si sus valores R, G y B son mayores o iguales a un umbral (por defecto 240), reemplaza ese píxel por uno completamente transparente.
  • Función procesar_imagenes:
    Utiliza la librería glob para buscar todos los archivos con extensión .jpg o .JPG en el directorio indicado. Si no encuentra ningún archivo, muestra un mensaje. Para cada archivo encontrado, abre la imagen, procesa el fondo y la guarda en formato PNG con el mismo nombre base.
  • Bloque Principal:
    El script se ejecuta en el directorio actual (representado por "."). Puedes modificar este valor para apuntar a otra carpeta si es necesario.

Cómo usar el script

  1. Instalar Pillow:
    Asegúrate de tener instalada la librería Pillow, la cual se utiliza para el manejo de imágenes. Puedes instalarla con el siguiente comando: pip install pillow
  2. Ubicar tus imágenes:
    Coloca el script en el directorio donde se encuentren las imágenes JPG o modifica la ruta en la función procesar_imagenes según sea necesario.
  3. Ejecutar el script:
    Abre la terminal en el directorio del script y ejecuta: python procesar_imagenes.py El script imprimirá mensajes en la consola indicando el directorio actual, los archivos que está procesando y si se han generado los archivos PNG correctamente.

Conclusión

Este script es una solución sencilla y efectiva para automatizar la conversión de imágenes y la eliminación del fondo blanco en tus archivos JPG. Puedes ajustar el umbral en la función eliminar_fondo_blanco según tus necesidades para optimizar la detección del fondo blanco.

¡Espero que este artículo te sea de utilidad en tu proyecto y facilite tu flujo de trabajo con imágenes!


Si tienes dudas o necesitas más personalizaciones, no dudes en dejar un comentario o contactar para más detalles.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad