Pillow de Python: uso del módulo de imagen

En este artículo, veremos cómo trabajar con el módulo de imagen de PIL en Python. Primero, veamos cómo instalar el PIL. 

Instalación:

Linux: en la terminal de Linux escriba lo siguiente:

pip install Pillow

Instalación de pip a través de la terminal:

sudo apt-get update
sudo apt-get install python-pip

Trabajar con el módulo de imagen

Aquí, veremos algunos métodos y propiedades proporcionados por el módulo de imagen que son los siguientes:

  • Abrir imagen,
  • Guardar imagen,
  • Tamaño de la imagen,
  • rotar imagen,
  • Delimitar imagen,
  • Cambiar el tamaño de la imagen y muchos más.

 Analicemos esto uno por uno con la ayuda de algunos ejemplos.

1. Abra una imagen:

Para abrir la imagen usando PIL, estamos usando el método open().

Sintaxis: PIL.Image.open(fp, modo=’r’, formatos=Ninguno)

Python3

# importing Image from PIL
from PIL import Image
 
# open an image
img = Image.open('gfg.png')

Producción:

2. Recuperar tamaño de la imagen:

Para recuperar el tamaño de la imagen, usaremos la propiedad proporcionada por el objeto Imagen, es decir; Propiedad de tamaño de imagen.

Sintaxis: Imagen.tamaño

Python3

from PIL import Image
   
with Image.open("gfg.png") as image:
    width, height = image.size
 
print((width,height))

Producción:

(200, 200)

3. Guarda los cambios en la imagen:

Para guardar la imagen, estamos usando el método Image.save().

Sintaxis: Image.save(fp, formato=Ninguno, **parámetros)

Parámetros:

  • fp : un nombre de archivo (string), objeto pathlib.Path 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, siempre se debe usar este parámetro.
  • opciones : parámetros adicionales para el escritor de imágenes.

Devoluciones: Ninguna

Python3

from PIL import Image
   
img = Image.open("gfg.png")
 
img.save("logo.jpg")

Producción:

4. Rotar una imagen:

La rotación de la imagen necesita un ángulo como parámetro para rotar la imagen.

Sintaxis: Image.rotate(ángulo, remuestreo=0, expandir=0, centro=Ninguno, traducir=Ninguno, color de relleno=Ninguno)

Parámetros:

  • ángulo : en grados en sentido contrario a las agujas del reloj.
  • remuestreo : un filtro de remuestreo opcional.
  • expandir : indicador de expansión opcional. Si es verdadero, expande la imagen de salida para que sea lo suficientemente grande como para contener toda la imagen girada.
  • centro : centro de rotación opcional (una tupla de 2). El origen es la esquina superior izquierda. El valor predeterminado es el centro de la imagen.
  • traducir : una traducción posterior a la rotación opcional (una tupla de 2).
  • color de relleno : un color opcional para el área fuera de la imagen girada.

Python3

from PIL import Image
 
img = Image.open("gfg.png")
 
rot_img = img.rotate(180)
 
rot_img.save("rotated_gfg.png")

Producción:

Imagen original

Imagen girada

5. Recortar una imagen:  

Image.crop(box) toma una coordenada de píxel de 4 tuplas (izquierda, superior, derecha, inferior) y devuelve una región rectangular de la imagen utilizada.

Sintaxis: PIL.Imagen.crop(caja = Ninguno)

Parámetros:

  • cuadro: una tupla de 4 que define la coordenada de píxel izquierdo, superior, derecho e inferior.

Tipo de devolución: Imagen (Devuelve una región rectangular como (izquierda, superior, derecha, inferior)-tupla).

Retorno: un objeto de imagen.

Python3

from PIL import Image
 
#  open image and get size
img = Image.open("gfg.jpg")
width, height = img.size
 
# cropped image using coordinates
area = (0, 0, width/2, height/2)
crop_img = img.crop(area)
crop_img.save("cropped_image.jpg")

Producción:

Imagen recortada

6. Cambiar el tamaño de una imagen: 

Image.resize(size) se utiliza para cambiar el tamaño. Aquí el tamaño se proporciona como un ancho y alto de 2 tuplas.

Sintaxis: Image.resize(tamaño, remuestreo=0)

Parámetros:

  • tamaño : el tamaño solicitado en píxeles, como una tupla de 2: (ancho, alto).
  • remuestreo : un filtro de remuestreo opcional. Puede ser uno de PIL.Image.NEAREST (usar el vecino más cercano), PIL.Image.BILINEAR (interpolación lineal), PIL.Image.BICUBIC (interpolación spline cúbica) o PIL.Image.LANCZOS (un filtro de reducción de resolución de alta calidad). ). Si se omite, o si la imagen tiene el modo “1” o “P”, se establece PIL.Image.NEAREST.

Tipo de retorno: un objeto de imagen.

Python3

from PIL import Image
 
img = Image.open("gfg.png")
width, height = img.size
    
#resizing the image 
img = img.resize((width//2, height//2))
       
img.save("resized_picture.png")

Producción:

Imagen redimensionada

7. Pegar una imagen sobre otra imagen: 

El segundo argumento puede ser una tupla de 2 (que especifica la esquina superior izquierda) o una tupla de 4 (izquierda, superior, derecha, inferior); en este caso, el tamaño de la imagen pegada debe coincidir con el tamaño de esta región del cuadro. o Ninguno que es equivalente a (0, 0). 

Sintaxis: PIL.Image.Image.paste(image_1, image_2, box=Ninguno, máscara=Ninguno)

             image_object.paste(image_2, box=Ninguno, máscara=Ninguno)

Parámetros:

  • image_1/image_object : Es la imagen en la que se pegará otra imagen.
  • image_2 : imagen de origen o valor de píxel (entero o tupla).
  • cuadro Una tupla de 4 opcional que proporciona la región para pegar. Si en su lugar se usa una tupla de 2, se trata como la esquina superior izquierda. Si se omite o Ninguno, la fuente se pega en la esquina superior izquierda.
  • mask : una imagen de máscara opcional.

Si se proporciona una imagen como segundo argumento y no hay un tercero, el cuadro predeterminado es (0, 0) y el segundo argumento se interpreta como una imagen de máscara.

Python3

from PIL import Image
 
img1 = Image.open("gfg.jpg")
 
#pasting img2 on img1
img2 = Image.open("gfg.png")
img1.paste(img2, (50, 50))
 
img1.save("pasted_picture.jpg")

Producción: 

8. Transponer una imagen: 

Esta característica nos da la imagen especular de una imagen.

Sintaxis: Transponer imagen (voltear o rotar en pasos de 90 grados)

Parámetros:

  • método : uno de PIL.Image.FLIP_LEFT_RIGHT, PIL.Image.FLIP_TOP_BOTTOM, PIL.Image.ROTATE_90, PIL.Image.ROTATE_180, PIL.Image.ROTATE_270 o PIL.Image.TRANSPOSE.

Tipo de retorno: un objeto de imagen.

Python3

from PIL import Image
 
img = Image.open("gfg.png")     
 
#flipping the image by 180 degree horizontally
transposed_img = img.transpose(Image.FLIP_LEFT_RIGHT)
        
transposed_img.save("transposed.png")

Producción:

Original

Imagen transpuesta

9. Creación de una miniatura: 

Este método crea una miniatura de la imagen que se abre. No devuelve un nuevo objeto de imagen, sino que realiza modificaciones in situ en el propio objeto de imagen actualmente abierto. Si no desea cambiar el objeto de imagen original, cree una copia y luego aplique este método. Este método también evalúa lo adecuado para mantener la relación de aspecto de la imagen según el tamaño pasado.

Sintaxis: Image.thumbnail(tamaño, remuestreo=3)

Parámetros:

  • talla – Talla solicitada.
  • remuestreo : filtro de remuestreo opcional.

Tipo de devolución: un objeto de imagen.

Python3

from PIL import Image
 
img = Image.open("gfg.png")
 
img.thumbnail((200, 200))
 
img.save("thumb.png")

Producción:

Miniatura de 200 x 200 píxeles

Publicación traducida automáticamente

Artículo escrito por biswasarkadip y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *