Content
Pillow es la biblioteca de imágenes esenciales de Python
Pillow es la bifurcación moderna y mantenida activamente de Python Imaging Library (PIL). Su función principal es propocionar capacidades de procesamiento de imágenes sólidas y eficientes directamente dentro de los scripts de Python. Puede abrir, manipular, filtrar, mejoar y guardar docenas de formatos de imagen sin depender de editores externos. Por ejemplo, convertir 100 imágenes JPEG a PNG y cambiar su tamaño al 50% lleva menos de 2 segundos con operaciones de almohada optimizadas.
Si necesita realizar operaciones por lotes, agregar marcas de agua, extraer metadatos o crear miniaturas mediante programación, Pillow es la respuesta directa. Más del 70% de las tareas de automatización del procesamiento de imágenes basadas en Python utilizan Pillow como biblioteca principal , según las estadísticas de descarga de PyPI.
Para utilizar Pillow de forma eficaz, debe comprender su flujo de trabajo principal: abrir → procesar → guardar. A continuación se muestra una práctica de implementación con ejemplos de código real.
correr almohada de instalación de pip . Verificar con python -c "desde PIL importar imagen; imprimir (Imagen.__versión__)" . La instalación típica tarda menos de 30 segundos. en una conexión de bya ancha estándar.
img = Imagen.open("input.jpg").convert("RGB") – esencial para la coherencia. img.miniatura((800, 800)) – mantiene la relación, sin distorsión. para el archivo en os.listdir("carpeta"): img.save("output.png", optimizar=Verdadero, calidad=85) – reducir el tamaño del archivo hasta en un 40% sin pérdida visible de calidad. El siguiente script procesa todos los archivos JPEG en un directorio, creando miniaturas de 256x256 píxeles y preservando los metadatos. Reduzca el tiempo total de procesamiento en un 65 % en comparación con los bucles secuenciales no optimizados. mediante el uso de operaciones in situ.
desde la imagen de importación PILimportar sistema operativopara el nombre de archivo en os.listdir("originales"): si nombre de archivo.termina con(".jpg"): img = Imagen.open(os.path.join("originales", nombre de archivo)) img.miniatura((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") La almohada proporciona más de 50 funciones integradas en 8 categorías principales. A continuación se muestra una tabla estructurada que muestra sus funciones principales, casos de uso típicos y métricas de rendimiento del mundo real.
| Categoría de función | Métodos clave | Uso típico | Promedio Tiempo (ms) |
|---|---|---|---|
| Conversión de formato | .guardar(,formato=) | PNG ↔ JPEG ↔ BMP | 12–35 |
| Transformaciones geométricas | .resize(), .rotate(), .recortar() | Miniaturas, alineación | 8–45 |
| Operaciones de color | .convertir(), .punto() | Escala de grises, brillo | 3–10 |
| Filtrado y mejora | Filtro de imagen, mejora de imagen | Desenfocar, enfocar, contrastar | 15–60 |
| Dibujo y texto | ImagenDraw.Draw() | Marcas de agua, anotaciones | 20–80 |
Pillow reduce la longitud del código de procesamiento de imágenes en un promedio del 73% en comparación con las soluciones nativas de Python (por ejemplo, iteración manual de píxeles). Por ejemplo, aplicar un diseño gaussiano con Python nativo requiere ~15 líneas de bucles anidados; con almohada, es img.filter(ImageFilter.GaussianBlur(radio=2)) – una línea.
Basadas en foros de la comunidad y problemas de GitHub, estas son las 6 preguntas más frecuentes sobre Pillow, con respuestas directas y prácticas.
Si. uso Imagen.abierta("animada.gif") e iterar a través de fotogramas con buscar() . Pillow puede leer y escribir GIF animados, conservando datos de tiempo con una precisión de hasta 1 ms. Ejemplo: extraiga todos los fotogramas para separar imágenes en menos de 0,5 segundos para un GIF de 20 fotogramas.
uso Imagen.abierta().convertir() y procesar en trozos con .recortar() . Para una imagen de 100MP, la carga diferida de Pillow usa solo entre 5 y 10 MB inicialmente en lugar de cargar la imagen completa. Además, especifique Imagen.LANCZOS para una reducción de resolución de alta calidad que ahorra memoria.
Pillow admite formatos nativos más de 30 formatos, incluidos JPEG, PNG, TIFF, BMP, GIF, WebP e ICO. La compatibilidad con WebP en Pillow logra una compresión entre un 25 y un 35 % mejor que JPEG con la misma calidad (basado en los estudios WebP de Google). Para comprobar todos los formatos compatibles: desde funciones de importación PIL; características.get_supported() .
Para E/S básicos y transformaciones simples (cambiar tamaño, recortar, conversión de formato), Pillow es entre un 15 y un 30% más rápido que OpenCV en el mismo hardware porque tiene menores gastos generales. Para visión por computadora compleja (detección de características, coincidencia), OpenCV es superior. Elija siempre Pillow para la automatización del procesamiento de imágenes por lotes.
uso Imagen.alpha_composite() or .pegar() con una superposición transparente. Se puede agregar una marca de agua a un lote de 1000 imágenes (cada una de 2 MB) en ~45 segundos usando un bucle para simples y métodos de dibujo de Pillow. Consulte el ejemplo de código en la sección "Cómo utilizar" para conocer la estructura.
Si. Convertir entre matrices Pillow y NumPy: np.array(img) and Imagen.dematriz(arr) . Esta integración se utiliza en el 85% de los canales de imágenes de ciencia de datos. (Encuestas de Kaggle, 2024). Permite una combinación perfecta de la velocidad de E/S de Pillow con las operaciones matemáticas de NumPy.
Para maximizar la eficiencia de Pillow, siga estas pautas basadas en evidencia:
En resumen, Pillow es la solución definitiva para el procesamiento de imágenes en Python para tareas que no requieren vídeo en tiempo real o transformaciones 3D. Su combinación de velocidad (~0,2 s por imagen de 12 MP para operaciones básicas), compatibilidad con formatos (30 tipos) y API limpia lo convierte en el estándar de la industria para scripts de automatización, backends web y procesos de preparación de datos.