Python Pillow - Trabajar con imágenes

Este capítulo trata sobre temas que incluyen cómo leer y guardar una imagen en Pillow.

Leer una imagen

Leer y escribir imágenes usando la biblioteca de almohadas es muy simple, con la ayuda de PIL.Image module function.

Sintaxis

Image.open(fp, mode=’r’)

Dónde

  • fp- Un nombre de archivo (cadena), pathlib.Path objeto o un objeto de archivo. El objeto de archivo debe implementar los métodos read (), seek () y tell () y debe abrirse en modo binario.

  • mode - Es un argumento opcional, si se proporciona, debe ser 'r'.

  • Return value - Un objeto de imagen.

  • Error - Si no se puede encontrar el archivo o la imagen no se puede abrir e identificar.

Ejemplo

A continuación se muestra un ejemplo muy sencillo, donde vamos a abrir una imagen de cualquier formato (estamos usando.jpg), mostrarlo en una ventana y luego guardarlo (ubicación predeterminada) con otro formato de archivo (.png).

from PIL import Image
image = Image.open('beach1.jpg')
image.show()
image.save('beach1.bmp')
image1 = Image.open('beach1.bmp')
image1.show()

En el ejemplo anterior, importamos el módulo Image de la biblioteca PIL y luego llamamos al Image.open()función para leer una imagen del disco, que devuelve un tipo de datos de objeto de imagen. Determinará automáticamente el tipo de archivo observando el contenido del archivo. Para leer, elopen() la función acepta un filename(string), un path object o un image(file) objeto.

Entonces, al usar la función open (), en realidad estamos leyendo la imagen. Image.open () leerá la imagen y obtendrá toda la información relevante de la imagen.

Salida

Si guarda el programa anterior como Example.py y lo ejecuta, muestra las imágenes originales (.jpg) y resguardadas (.bmp) utilizando la utilidad de visualización PNG estándar, de la siguiente manera:

Actual image

Resaved image (.bmp)

Guardar una imagen

La función save () escribe una imagen en un archivo. Al igual que para la lectura (función open ()), la función save () acepta un nombre de archivo, un objeto de ruta o un objeto de archivo que se ha abierto para escribir.

Sintaxis

Image.save(fp, format=None, **params)

Dónde,

  • fp - Un nombre de archivo (cadena), pathlib.Path objeto u objeto de archivo.

  • format- Anulación de formato opcional. Si se omite, el formato a utilizar se determina a partir de la extensión del nombre de archivo. Si se usó un objeto de archivo en lugar de un nombre de archivo, este parámetro siempre debe usarse.

  • options - Parámetros extra para el escritor de imágenes.

  • Return value - Ninguno

  • KeyError - Si el formato de salida no se pudo determinar a partir del nombre del archivo, use la opción de formato para resolver esto.

  • IOError - Si el archivo no se pudo escribir, es posible que se haya creado y que contenga datos parciales.

En resumen, la sintaxis anterior guardará la imagen con el nombre de archivo dado. Si no se especifica ningún formato, se basa en la extensión del nombre de archivo actual. Para proporcionar instrucciones adicionales al escritor, utilizamos opciones de palabras clave.

image.save('beach1.bmp')

En el ejemplo anterior, guarda el archivo basándose en la extensión del archivo para determinar el tipo de imagen, por ejemplo, lo anterior creará un archivo bmp en nuestro directorio de trabajo actual.

También puede especificar explícitamente el tipo de archivo como segundo parámetro:

image.save('beach1.gif', 'GIF')