Módulo Pillow Image

Image es el módulo central de la biblioteca Pillow, que proporciona las funciones básicas de procesamiento de imágenes.

A continuación se presentan los métodos más utilizados del módulo Image y sus descripciones de funciones:

Método Descripción Ejemplo
Image.open(fp, mode='r') Abrir y reconocer archivos de imagen img = Image.open('image.jpg')
Image.new(mode, size, color=0) Crear una nueva imagen new_img = Image.new('RGB', (500, 500), 'blue')
Image.save(fp, format=None, **params) Guardar imagen img.save('output.png')
Image.show(title=None, command=None) Mostrar imagen img.show()
Image.resize(size, resample=None, box=None) Ajustar tamaño de la imagen img.resize((200, 200))
Image.rotate(angle, resample=0, expand=0) Rotar imagen img.rotate(45)
Image.crop(box=None) Recortar imagen img.crop((100, 100, 400, 400))
Image.paste(im, box=None, mask=None) Pegar imagen img.paste(logo, (50, 50))
Image.convert(mode, matrix=None, dither=None) Convertir modo de imagen img.convert('L')
Image.filter(filter) Aplicar filtro img.filter(ImageFilter.BLUR)
Image.copy() Copiar imagen copy = img.copy()
Image.thumbnail(size) Crear miniatura img.thumbnail((100, 100))
Image.getpixel(xy) Obtener valor de píxel pixel = img.getpixel((50, 50))
Image.putpixel(xy, value) Establecer valor de píxel img.putpixel((50, 50), (255, 0, 0))
Image.split() Separar canales r, g, b = img.split()
Image.merge(mode, bands) Combinar canales Image.merge('RGB', (r, g, b))

3. Propiedades comunes

Además de los métodos, los objetos Image tienen algunas propiedades importantes:

Propiedad Descripción Ejemplo
format Formato de imagen print(img.format)
size Dimensiones de la imagen (ancho, alto) print(img.size)
width Ancho de la imagen print(img.width)
height Alto de la imagen print(img.height)
mode Modo de imagen print(img.mode)
info Diccionario de información relacionada con la imagen print(img.info)

Ejemplo de aplicación práctica

Operaciones básicas de imágenes

Ejemplo

from PIL import Image

# Abrir imagen
img = Image.open('example.jpg')

# Mostrar información de la imagen
print(f"Formato: {img.format}, Tamaño: {img.size}, Modo: {img.mode}")

# Ajustar tamaño y guardar
resized_img = img.resize((300, 300))
resized_img.save('resized_example.jpg')

# Convertir a imagen en escala de grises
gray_img = img.convert('L')
gray_img.save('gray_example.jpg')

Procesamiento de imágenes

Ejemplo

from PIL import Image, ImageFilter

img = Image.open('example.jpg')

# Aplicar filtro de desenfoque
blurred = img.filter(ImageFilter.BLUR)
blurred.save('blurred.jpg')

# Aplicar filtro de contorno
contour = img.filter(ImageFilter.CONTOUR)
contour.save('contour.jpg')

# Rotar imagen
rotated = img.rotate(45, expand=True)
rotated.save('rotated.jpg')

Funciones avanzadas

Composición de imágenes

Ejemplo

from PIL import Image

# Abrir dos imágenes
img1 = Image.open('background.jpg')
img2 = Image.open('foreground.png')

# Asegurarse de que ambas imágenes tengan el mismo tamaño
img2 = img2.resize(img1.size)

# Componer imagen (suponiendo que foreground.png tiene canal alfa)
composite = Image.alpha_composite(img1.convert('RGBA'), img2.convert('RGBA'))
composite.save('composite.png')

Procesamiento por lotes

Ejemplo

import os
from PIL import Image

input_dir = 'input_images/'
output_dir = 'output_images/'

if not os.path.exists(output_dir):
    os.makedirs(output_dir)

for filename in os.listdir(input_dir):
    if filename.endswith('.jpg'):
        img = Image.open(os.path.join(input_dir, filename))
        # Convertir a escala de grises y guardar
        gray_img = img.convert('L')
        gray_img.save(os.path.join(output_dir, f"gray_{filename}"))
Otras extensiones