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:
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:
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:
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)
O
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:
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:
Publicación traducida automáticamente
Artículo escrito por biswasarkadip y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA