31/10/2015
Pillow, anteriormente conocida como Python Imaging Library (PIL), es la librería de referencia para el procesamiento de imágenes en Python. Su popularidad radica en su facilidad de uso, amplia compatibilidad con formatos de imagen y optimización para la manipulación eficiente de imágenes. En este artículo, exploraremos a fondo sus capacidades, desde las tareas más básicas hasta las más avanzadas.

¿Qué es Pillow y para qué se utiliza?
Pillow es una librería de código abierto que proporciona una interfaz sencilla e intuitiva para trabajar con imágenes. A diferencia de otras librerías que ofrecen un conjunto limitado de funciones, Pillow se centra exclusivamente en el procesamiento de imágenes, ofreciendo un amplio abanico de posibilidades. Se utiliza comúnmente en:
- Visión artificial : Procesamiento de imágenes para extraer información relevante.
- Procesamiento de vídeo : Manipulación de fotogramas individuales.
- Generación de miniaturas : Creación de versiones reducidas de imágenes.
- Conversión de formatos : Transformación entre diferentes formatos de imagen (JPEG, PNG, GIF, TIFF, etc.).
- Edición de imágenes : Ajustes de brillo, contraste, color, rotación, recorte, etc.
- Web scraping : Extracción de imágenes de sitios web.
Pillow soporta más de 30 formatos de imagen, incluyendo los más comunes como JPG, PNG, GIF y JPEG, pero también formatos más específicos como BLP (World of Warcraft), DDS (videojuegos) y FITS (astronomía).
¿Qué pasó con PIL (Python Imaging Library)?
PIL, la librería predecesora de Pillow, fue un proyecto muy popular pero su desarrollo se detuvo en 201 Pillow surgió como un fork de PIL, solucionando problemas de compatibilidad, añadiendo nuevas funcionalidades y, sobre todo, proporcionando soporte para Python x. Hoy en día, Pillow es el sucesor oficial de PIL y se ha convertido en el estándar de facto para el procesamiento de imágenes en Python. Distribuciones de Linux como Debian y Ubuntu utilizan Pillow en lugar de PIL.
¿Es Pillow rápido?
Sí, Pillow está altamente optimizada para el rendimiento. Su eficiencia se debe a su diseño específico para el procesamiento de imágenes y a su código base bien escrito. Si bien otras librerías como OpenCV e Imageio también ofrecen capacidades de procesamiento de imágenes, Pillow destaca por su:
- Compatibilidad : Soporta una amplia gama de formatos de imagen.
- Rendimiento : Optimizado para el procesamiento rápido de imágenes, incluso grandes cantidades.
- Facilidad de uso : API sencilla e intuitiva.
- Comunidad activa : Gran cantidad de recursos, documentación y soporte disponible.
En tareas de procesamiento masivo o en tiempo real, Pillow puede ser la opción más eficiente. Sin embargo, para tareas más complejas de visión por computador que requieren algoritmos avanzados, OpenCV puede ser más adecuado.
Comparación con otras librerías
| Librería | Ventajas | Desventajas |
|---|---|---|
| Pillow | Fácil de usar, amplia compatibilidad de formatos, buena optimización. | Menos funcionalidades avanzadas para visión por computador que OpenCV. |
| OpenCV | Potente para visión por computador, muchas funciones avanzadas. | Curva de aprendizaje más pronunciada, mayor complejidad. |
| imageio | Fácil de usar para leer y escribir imágenes y videos de varios formatos. | Menos funcionalidades de procesamiento de imagen que Pillow. |
La elección de la librería dependerá de las necesidades del proyecto. Para tareas básicas de manipulación y conversión de imágenes, Pillow es una excelente opción. Para tareas más complejas de visión por computador, OpenCV es la mejor alternativa.
Ejemplos de uso de Pillow
Conversión de JPEG a PNG
from PIL import Imageimport osdef convertir_jpegs_a_pngs(ruta_carpeta): if not os.path.isdir(ruta_carpeta): print(f"Error: {ruta_carpeta} no es una carpeta válida.") return for nombre_archivo in os.listdir(ruta_carpeta): if nombre_archivo.lower().endswith('.jpg') or nombre_archivo.lower().endswith('.jpeg'): ruta_jpeg = os.path.join(ruta_carpeta, nombre_archivo) ruta_png = os.path.join(ruta_carpeta, os.path.splitext(nombre_archivo)[0] + '.png') try: with Image.open(ruta_jpeg) as img: img.save(ruta_png, 'PNG') print(f"Convertido {ruta_jpeg} a {ruta_png}") except Exception as e: print(f"Error convirtiendo {ruta_jpeg}: {e}")Creación de un GIF animado
from PIL import Imageimagenes = []for i in range(1, 11): imagenes.append(Image.open(f"imagen{i}.jpg"))imagenes[0].save("animado.gif", save_all=True, append_images=imagenes[1:], duration=100, loop=0)Instalación de Pillow
La forma más sencilla de instalar Pillow es usando pip :
pip install PillowPara una instalación más avanzada con opciones de compilación, consulta la documentación oficial. Recuerda que es posible que necesites instalar librerías externas dependiendo de los formatos de imagen que quieras usar (libjpeg, zlib, libtiff, etc.).
Solución de problemas
Algunos problemas comunes al usar Pillow y sus soluciones:
- Error de importación: Si te encuentras con errores al importar Pillow , verifica que esté correctamente instalada. Utiliza
pip show Pillowpara comprobar la instalación. - Incompatibilidad de versiones: Asegúrate de que la versión de Pillow sea compatible con la versión de Python que estás utilizando.
- Problemas con librerías externas: Si tienes problemas con formatos de imagen específicos, verifica que tengas instaladas las librerías externas necesarias (libjpeg, libtiff, etc.).
La documentación oficial de Pillow es un recurso invaluable para solucionar problemas y aprender más sobre sus funcionalidades. Recuerda consultar la documentación para obtener información detallada sobre la instalación, uso y solución de problemas.
Pillow es una librería robusta y versátil para el procesamiento de imágenes en Python. Su facilidad de uso, amplio soporte de formatos y optimización para el rendimiento la convierten en una herramienta esencial para cualquier desarrollador que trabaje con imágenes. Desde la conversión simple de formatos hasta la creación de GIFs animados, Pillow ofrece una amplia gama de posibilidades para manipular imágenes de manera eficiente y efectiva.
Si quieres conocer otros artículos parecidos a Pillow : como hacerlo para el procesamiento de imágenes con python puedes visitar la categoría Libros y Librerías.
