Convertir imágenes heic a jpg con Python

Este año empecé en una nueva empresa, y uno de los primeros retos fue recopilar información de diferentes fuentes de la planta y los equipos de la compañía. Entre esas fuentes, trabajamos con muchas imágenes, pero me encontré con un problema: Windows no permitía leer imágenes en formato HEIC. Como soy de los que busca…
septiembre 20, 2024 by Camilo Andrés Rodriguez

Este año empecé en una nueva empresa, y uno de los primeros retos fue recopilar información de diferentes fuentes de la planta y los equipos de la compañía. Entre esas fuentes, trabajamos con muchas imágenes, pero me encontré con un problema: Windows no permitía leer imágenes en formato HEIC.

Como soy de los que busca soluciones, decidí crear un pequeño script que transforma estas imágenes a formato JPG, para que Windows no me dé problemas. Sí, sé que existen conversores en línea, tanto gratuitos como de pago, pero enfrentaba dos inconvenientes: primero, la privacidad de la información, y segundo, la cantidad de imágenes era considerable.

Para resolver esto, utilicé las librerías Pillow y pillow_heif para manipular las imágenes. Si no las tienes instaladas, puedes hacerlo fácilmente con pip. También utilicé Pathlib para gestionar las rutas de archivos, algo que te recomiendo como una buena práctica que vale la pena incorporar en tus proyectos.

Te dejo el código a continuación. Espero que te sirva y que lo adaptes según tus necesidades

from pillow_heif import register_heif_opener
from pathlib import Path
from PIL import Image
import os


# Aqui va el path de la carpeta que contiene las imagenes
path = Path("/home/camilo/ejemplo")
content = os.listdir(path)

# Filtra solo los archivos con la extension que necesitas
files = [f for f in content if str(f).endswith(".heic")]

# Registrar el HEIC opener, importante para poder manejar imagenes .heic
register_heif_opener()

for img in files:
    
    print("Procesando imagen >>>",img)

    # Definir el nuevo nombre del archivo
    file_path = Path(path,f'{img.replace(".heic",".jpg")}')
    
    # Abrir imagen
    image = Image.open(Path(path,img))

    # Convert to JPEG
    image.convert('RGB').save(file_path)

septiembre 20, 2024 by Camilo Andrés Rodriguez

Deja tu comentario