¿Qué es la Biblioteca Pil?

PIL y Pillow: Procesamiento de Imágenes en Python

26/08/2025

Valoración: 4.85 (862 votos)

En la era digital, la manipulación de imágenes es una habilidad fundamental para desarrolladores, diseñadores y entusiastas por igual. Desde el redimensionamiento simple hasta complejas transformaciones, contar con herramientas robustas es esencial. Para la comunidad de Python, la Python Imaging Library (PIL) fue durante mucho tiempo el estándar, pero como muchas tecnologías, evolucionó. Hoy, su legado vive y prospera a través de Pillow, un fork moderno y activamente mantenido que se ha convertido en la biblioteca de facto para el procesamiento de imágenes en Python. Este artículo explorará el camino de PIL a Pillow, sus características distintivas, cómo instalarla y cómo comenzar a liberar el potencial visual en tus aplicaciones.

¿Qué es el PIL en Python?
Una guía ilustrada útil PIL es una abreviatura de Biblioteca de imágenes de Python y agrega procesamiento de imágenes a Python. En 2011, PIL se suspendió:su marco sucesor no oficial Pillow para el procesamiento de imágenes es una alternativa fácil de usar y mantenida activamente para Python 3.

¿Qué es PIL y Cuál Fue su Importancia Original?

La Python Imaging Library, conocida comúnmente como PIL, fue una biblioteca pionera que introdujo capacidades de procesamiento de imágenes al lenguaje Python. Lanzada por Fredrik Lundh, PIL permitió a los desarrolladores realizar una amplia gama de operaciones con imágenes, como leer y escribir diferentes formatos de archivo (JPEG, PNG, GIF, BMP, etc.), redimensionar, rotar, recortar, aplicar filtros y mucho más. Su facilidad de uso y la integración con Python la convirtieron rápidamente en una herramienta indispensable para cualquiera que trabajara con datos visuales.

Durante años, PIL fue la solución predilecta para tareas que iban desde la creación de miniaturas para sitios web hasta la manipulación de imágenes para análisis científico. Su arquitectura modular y su interfaz intuitiva facilitaron que los programadores, incluso aquellos con poca experiencia en procesamiento de imágenes, pudieran incorporar funcionalidades visuales avanzadas en sus proyectos. Sin embargo, el desarrollo de PIL se estancó. La última actualización oficial de PIL data de 2009, y lo que es más crítico, nunca ofreció soporte nativo para Python 3, la versión predominante y futura del lenguaje.

La Transición a Pillow: El Sucesor Moderno

Dada la importancia de las capacidades de procesamiento de imágenes y la obsolescencia de PIL, la comunidad de Python necesitaba una alternativa mantenida y compatible con las versiones modernas del lenguaje. Aquí es donde entra en juego Pillow. Pillow es un fork de la biblioteca PIL, lo que significa que toma el código base original de PIL y lo desarrolla de forma independiente, añadiendo nuevas características, corrigiendo errores y, crucialmente, asegurando la compatibilidad con Python 3.

Desde su surgimiento en 2011, Pillow ha sido mantenida activamente por una comunidad de desarrolladores, convirtiéndose en el estándar de facto para el procesamiento de imágenes en Python. Aunque se instala como 'Pillow', dentro del código Python se sigue importando comúnmente como PIL, manteniendo una familiaridad para aquellos que venían de la versión original. Esta continuidad en el nombre de importación minimiza la fricción para los desarrolladores que migran o actualizan sus proyectos.

Características Clave de Pillow para el Procesamiento de Imágenes

Pillow hereda y expande las poderosas capacidades de PIL, ofreciendo un conjunto robusto de herramientas para el manejo de imágenes. A continuación, algunas de sus características más destacadas:

  • Soporte Extenso de Formatos: Pillow puede abrir, manipular y guardar imágenes en una amplia variedad de formatos, incluyendo JPEG, PNG, GIF, BMP, TIFF, WebP, ICO, y muchos más. Esto garantiza una gran flexibilidad al trabajar con diferentes fuentes de imágenes.
  • Manipulación Básica de Imágenes: Permite realizar operaciones fundamentales como redimensionar (resize()), rotar (rotate()), recortar (crop()), voltear (transpose() o transpose(Image.FLIP_LEFT_RIGHT)), y convertir entre diferentes modos de color (RGB, CMYK, escala de grises, etc.).
  • Filtros y Mejoras: Incluye una variedad de filtros predefinidos para mejorar la calidad de la imagen (nitidez, desenfoque, contorno, relieve) y operaciones de mejora como ajuste de brillo, contraste y color.
  • Dibujo Gráfico: Pillow permite dibujar formas geométricas (líneas, rectángulos, elipses), texto y píxeles individuales directamente sobre una imagen, lo cual es útil para añadir marcas de agua, anotaciones o gráficos simples.
  • Manejo de Píxeles: Ofrece acceso de bajo nivel a los datos de píxeles, lo que permite manipulaciones personalizadas y algoritmos complejos.
  • Generación de Miniaturas: Facilita la creación eficiente de miniaturas de imágenes, una función crucial para aplicaciones web y galerías de imágenes.
  • Compatibilidad con NumPy y OpenCV: Pillow se integra muy bien con otras bibliotecas científicas y de visión por computadora de Python, como NumPy para el procesamiento numérico de arrays de píxeles y OpenCV para tareas más avanzadas de visión artificial, permitiendo flujos de trabajo potentes y complejos.
  • Captura de Pantalla: Aunque más específica, Pillow también tiene la capacidad de tomar capturas de pantalla de monitores, lo cual puede ser útil para automatización o herramientas de prueba.

Instalación de Pillow: Un Proceso Sencillo

Para empezar a trabajar con Pillow, primero debes instalarla en tu entorno de Python. Dado que es la biblioteca más utilizada para procesamiento de imágenes en Python, su instalación es bastante directa.

Uso de pip (Recomendado)

La forma más común y recomendada de instalar Pillow es usando pip, el instalador de paquetes de Python. Asegúrate de tener pip actualizado en tu sistema.

Abre tu terminal o símbolo del sistema y ejecuta el siguiente comando:

pip install Pillow

Si estás utilizando un entorno virtual de Python, asegúrate de activarlo antes de ejecutar el comando para instalar Pillow dentro de ese entorno.

¿Cuáles son las características de la librería Pil?
Dentro de las características de esta librería tenemos que: Uso básico, tomará una captura de pantalla por cada monitor o una captura de todos los monitores y la guardará en un archivo .PNG. Compatibilidad, puede usar los formatos admitidos por la librería PIL y se integra muy bien con Numpy y OpenCV.

Instalación en Sistemas Basados en Debian/Ubuntu

Para usuarios de distribuciones Linux basadas en Debian o Ubuntu, Pillow (o python3-pil) a menudo está disponible a través del gestor de paquetes del sistema. Esto puede ser útil si prefieres gestionar tus paquetes de Python a nivel de sistema:

sudo apt install python3-pil

Una vez instalada, puedes verificar si la instalación fue exitosa intentando importarla en un intérprete de Python:

python3 >>> import PIL >>> # Si no hay errores, la instalación fue exitosa.

Si antes de la instalación obtenías un error como ImportError: No module named 'PIL', después de instalar Pillow ese error debería desaparecer, lo que confirma que la biblioteca está lista para ser utilizada.

Manipulación Básica de Imágenes con Pillow

Una vez que Pillow está instalada, puedes comenzar a manipular imágenes con unas pocas líneas de código. Aquí te mostramos algunos ejemplos fundamentales.

Abriendo y Guardando Imágenes

El primer paso es abrir una imagen existente. Pillow utiliza la clase Image para representar imágenes.

from PIL import Image # Abre una imagen imagen = Image.open("mi_imagen.jpg") # Muestra información básica de la imagen print(f"Formato: {imagen.format}") print(f"Modo: {imagen.mode}") print(f"Tamaño: {imagen.size}") # Guarda la imagen (opcionalmente en un nuevo formato) imagen.save("mi_imagen_copia.png") print("Imagen guardada como mi_imagen_copia.png")

Redimensionando Imágenes

Redimensionar es una de las operaciones más comunes. El método resize() te permite especificar el nuevo ancho y alto.

from PIL import Image imagen = Image.open("mi_imagen.jpg") # Define el nuevo tamaño (ancho, alto) nuevo_tamano = (640, 480) nueva_imagen = imagen.resize(nuevo_tamano) nueva_imagen.save("mi_imagen_redimensionada.jpg") print(f"Imagen redimensionada a {nuevo_tamano} y guardada.")

Rotando Imágenes

Puedes rotar una imagen a cualquier ángulo usando el método rotate().

from PIL import Image imagen = Image.open("mi_imagen.jpg") # Rota la imagen 90 grados en sentido antihorario imagen_rotada = imagen.rotate(90, expand=True) # expand=True ajusta el lienzo para que la imagen completa quepa imagen_rotada.save("mi_imagen_rotada.jpg") print("Imagen rotada 90 grados y guardada.")

Combinando Operaciones

Una de las ventajas de Pillow es que puedes encadenar operaciones o combinarlas de manera eficiente:

from PIL import Image imagen = Image.open("mi_imagen.jpg") # Rota la imagen, luego la redimensiona y guarda el resultado # Las operaciones se ejecutan de izquierda a derecha imagen_final = imagen.rotate(45, expand=True).resize((300, 300)) imagen_final.save("mi_imagen_rotada_redimensionada.png") print("Imagen rotada, redimensionada y guardada.")

Accediendo a la Documentación de Pillow

Pillow, al igual que muchas bibliotecas de Python, está bien documentada. Puedes acceder a la documentación de varias maneras:

  • Docstrings en Python: Desde el intérprete de Python, puedes usar la función help() para obtener información sobre los módulos, clases y métodos de Pillow. Por ejemplo, help(PIL.Image) te mostrará la documentación de la clase Image.
  • Documentación Online: La forma más completa y actualizada de acceder a la documentación es a través del sitio web oficial de Pillow. Allí encontrarás guías detalladas, ejemplos y referencias completas para todas las funciones y características.

Familiarizarse con la documentación es clave para explotar todo el potencial de Pillow y resolver dudas específicas sobre sus funcionalidades.

PIL vs. Pillow: Una Comparativa Esencial

Para entender por qué Pillow es la opción actual, es útil ver una comparación directa con su predecesor, PIL.

CaracterísticaPython Imaging Library (PIL)Pillow
Estado del ProyectoDescontinuado (última actualización en 2009)Activamente mantenido y desarrollado
Compatibilidad con Python 3No soporta Python 3Soporte completo para Python 3 (y versiones anteriores en lanzamientos específicos)
InstalaciónComplicada en sistemas modernos y Python 3Sencilla a través de pip
Corrección de ErroresNo se corrigen errores ni vulnerabilidadesActualizaciones constantes con correcciones de errores y mejoras de seguridad
Nuevas FuncionalidadesNo se añaden nuevas característicasSe añaden regularmente nuevas funciones y formatos
ComunidadInactivaActiva y en crecimiento
Nombre de Importaciónimport PILimport PIL (aunque se instala como 'Pillow')

Como se puede observar en la tabla, la elección entre PIL y Pillow es clara. Pillow no solo ha resuelto los problemas de compatibilidad y mantenimiento de PIL, sino que también ha evolucionado la biblioteca para satisfacer las demandas modernas del procesamiento de imágenes, haciéndola indispensable para cualquier proyecto de Python.

¿Cuál es la última librería de Python?
Para crear un gráfico 3D a partir de una fórmula en Python, es necesario tener instalado Python 3.4 o una versión posterior y las librerías Matplotlib y NumPy (esta última ya incluida en Matplotlib). Comentarios...

Preguntas Frecuentes sobre PIL y Pillow

¿Sigue siendo relevante PIL en la actualidad?

No, la Python Imaging Library (PIL) original ya no es relevante ni recomendable para el desarrollo moderno. Fue descontinuada en 2009 y no es compatible con Python 3. Siempre se debe usar su sucesor, Pillow, para cualquier tarea de procesamiento de imágenes en Python.

¿Cuál es la diferencia principal entre PIL y Pillow?

La diferencia fundamental es el soporte y el mantenimiento. Pillow es el fork (derivación) de PIL que ha sido actualizado para ser compatible con Python 3 y se mantiene activamente con correcciones de errores, mejoras de seguridad y nuevas características. PIL está obsoleto.

¿Cómo importo Pillow en mi código Python?

A pesar de que instalas el paquete 'Pillow', lo importas en tu código Python de la misma manera que lo hacías con PIL: from PIL import Image o import PIL. Esto se hizo para mantener la compatibilidad hacia atrás y facilitar la transición.

¿Pillow solo sirve para redimensionar imágenes?

Absolutamente no. Redimensionar es solo una de sus muchas capacidades. Pillow permite rotar, recortar, aplicar filtros, ajustar colores, dibujar formas y texto, convertir entre formatos y modos de color, y mucho más. Es una biblioteca muy completa para una amplia gama de manipulaciones de imágenes.

¿Puedo usar Pillow para trabajar con imágenes en aplicaciones web?

Sí, Pillow es ampliamente utilizada en el desarrollo web con frameworks como Django o Flask para tareas como la subida y procesamiento de imágenes de usuario, la generación de miniaturas, la aplicación de marcas de agua o la optimización de imágenes para la web. Su eficiencia y facilidad de uso la hacen ideal para estos propósitos.

¿Qué requisitos tiene Pillow?

Pillow requiere Python 3.x (las versiones más recientes de Pillow suelen soportar las últimas versiones de Python 3). Algunas funcionalidades avanzadas pueden requerir librerías externas para codecs específicos (por ejemplo, para WebP o JPEG 2000), pero las funciones básicas funcionan con la instalación estándar.

Conclusión

El viaje de PIL a Pillow es un testimonio de la naturaleza evolutiva del software y la importancia de una comunidad activa. Mientras que PIL sentó las bases para el procesamiento de imágenes en Python, Pillow ha tomado ese legado y lo ha adaptado a la era moderna, ofreciendo una solución robusta, compatible y fácil de usar para cualquier tarea relacionada con imágenes. Si estás buscando una biblioteca para manipular imágenes en Python, Pillow es, sin duda, la elección correcta. Su versatilidad, rendimiento y el continuo soporte de la comunidad la convierten en una herramienta indispensable en el arsenal de cualquier desarrollador de Python.

Si quieres conocer otros artículos parecidos a PIL y Pillow: Procesamiento de Imágenes en Python puedes visitar la categoría Librerías.

Subir