Python Imaging Library (expansión de PIL) es el paquete de procesamiento de imágenes de facto para el lenguaje Python. Incorpora herramientas ligeras de procesamiento de imágenes que ayudan a editar, crear y guardar imágenes. El soporte para Python Imaging Library se suspendió en 2011, pero un proyecto llamado pillow bifurcó el proyecto PIL original y le agregó soporte para Python3.x. Pillow se anunció como reemplazo de PIL para uso futuro. Pillow admite una gran cantidad de formatos de archivo de imagen, incluidos BMP, PNG, JPEG y TIFF. La biblioteca fomenta la adición de soporte para formatos más nuevos en la biblioteca mediante la creación de nuevos decodificadores de archivos.
Este módulo no está precargado con Python. Entonces, para instalarlo, ejecute el siguiente comando en la línea de comandos:
pip install pillow
Nota: Varias distribuciones de Linux tienden a tener Python y PIL preinstalados.
Comenzando con Pillow
1. Abrir una imagen usando open(): La clase PIL.Image.Image representa el objeto de imagen. Esta clase proporciona el método open() que se usa para abrir la imagen.
Ejemplo: Supongamos que la imagen es:
Python3
from PIL import Image # test.png => location_of_image img = Image.open(r"test.png")
Nota: La ubicación de la imagen debe ser relativa solo si la imagen está en el mismo directorio que el programa Python; de lo contrario, se debe proporcionar la ruta absoluta (completa) de la imagen.
2. Mostrar la imagen usando show(): Este método se usa para mostrar la imagen. Para mostrar la imagen, Pillow primero convierte la imagen a un formato .png (en el sistema operativo Windows) y la almacena en un búfer temporal y luego la muestra. Por lo tanto, debido a la conversión del formato de imagen a .png, es posible que se pierdan algunas propiedades del formato de archivo de imagen original (como la animación). Por lo tanto, se recomienda utilizar este método solo con fines de prueba.
Python3
from PIL import Image img = Image.open(r"test.png") img.show()
Producción:
3. Obtención de información sobre la imagen abierta
A) Obtener el modo (modo de color) de la imagen: el atributo de modo de la imagen indica el tipo y la profundidad del píxel en la imagen. Un píxel de 1 bit tiene un rango de 0-1 y un píxel de 8 bits tiene un rango de 0-255. Hay diferentes modos proporcionados por este módulo. Algunos de ellos son:
Modo | Descripción |
---|---|
1 | píxeles de 1 bit, en blanco y negro |
L | píxeles de 8 bits, escala de grises |
PAGS | Píxeles de 8 bits, asignados a cualquier otro modo mediante una paleta de colores |
RGB | Píxeles de 3 × 8 bits, color verdadero |
RGBA | Píxeles de 4 × 8 bits, color verdadero con máscara de transparencia |
Ejemplo:
Python3
from PIL import Image img = Image.open(r"test.png") print(img.mode)
Producción:
RGBA
Nota: Consulte la documentación para conocer los modos .
B) Obtener el tamaño de la imagen: Este atributo proporciona el tamaño de la imagen. Devuelve una tupla que contiene ancho y alto.
Ejemplo:
Python3
from PIL import Image img = Image.open(r"test.png") print(img.size)
Producción:
(180, 263)
C) Obtener el formato de la imagen: Este método devuelve el formato del archivo de imagen.
Python3
from PIL import Image img = Image.open(r"test.png") print(img.format)
Producción:
PNG
4. Rotación de una imagen usando rotate(): Después de rotar la imagen, las secciones de la imagen que no tienen valores de píxel se rellenan con negro (para imágenes no alfa) y con píxeles completamente transparentes (para imágenes que admiten transparencia)
Ejemplo:
Python3
from PIL import Image angle = 40 img = Image.open(r"test.png") r_img = img.rotate(angle)
Producción:
5. Cambiar el tamaño de una imagen usando resize(): La interpolación ocurre durante el proceso de cambio de tamaño, por lo que la calidad de la imagen cambia ya sea que se aumente la escala (se redimensione a una dimensión más alta que la original) o se reduzca la escala (se redimensione a una imagen más baja que la original) . Por lo tanto, resize() debe usarse con precaución y al mismo tiempo proporcionar un valor adecuado para el argumento de remuestreo.
Ejemplo:
Python3
from PIL import Image size = (40, 40) img = Image.open(r"test.png") r_img = img.resize(size) r_img.show()
Producción:
6. Guardar una imagen usando save(): Al usar el método save() Destination_path también debe tener el nombre de archivo y la extensión de la imagen. La extensión podría omitirse en Destination_path si la extensión se especifica en el argumento de formato.
Python3
from PIL import Image size = (40, 40) img = Image.open(r"test.png") r_img = img.resize(size, resample = Image.BILINEAR) # resized_test.png => Destination_path r_img.save("resized_test.png") # Opening the new image img = Image.open(r"resized_test.png") print(img.size)
Producción:
(40, 40)