Pillow: модуль Image

Image — это основной модуль библиотеки Pillow, предоставляющий базовые функции обработки изображений.

Ниже приведены наиболее часто используемые методы модуля Image и описания их функций:

Метод Описание Пример
Image.open(fp, mode='r') Открыть и определить файл изображения img = Image.open('image.jpg')
Image.new(mode, size, color=0) Создать новое изображение new_img = Image.new('RGB', (500, 500), 'blue')
Image.save(fp, format=None, **params) Сохранить изображение img.save('output.png')
Image.show(title=None, command=None) Отобразить изображение img.show()
Image.resize(size, resample=None, box=None) Изменить размер изображения img.resize((200, 200))
Image.rotate(angle, resample=0, expand=0) Повернуть изображение img.rotate(45)
Image.crop(box=None) Обрезать изображение img.crop((100, 100, 400, 400))
Image.paste(im, box=None, mask=None) Вставить изображение img.paste(logo, (50, 50))
Image.convert(mode, matrix=None, dither=None) Преобразовать режим изображения img.convert('L')
Image.filter(filter) Применить фильтры img.filter(ImageFilter.BLUR)
Image.copy() Копировать изображение copy = img.copy()
Image.thumbnail(size) Создать миниатюру img.thumbnail((100, 100))
Image.getpixel(xy) Получить значение пикселя pixel = img.getpixel((50, 50))
Image.putpixel(xy, value) Установить значение пикселя img.putpixel((50, 50), (255, 0, 0))
Image.split() Разделить каналы r, g, b = img.split()
Image.merge(mode, bands) Объединить каналы Image.merge('RGB', (r, g, b))

3. Общие атрибуты

Помимо методов, объекты Image также имеют некоторые важные атрибуты:

Attribute Описание Пример
format Формат изображения print(img.format)
size Размер изображения (ширина, высота) print(img.size)
width Ширина изображения print(img.width)
height Высота изображения print(img.height)
mode Режим изображения print(img.mode)
info Словарь с информацией об изображении print(img.info)

Примеры практического применения

Базовые операции с изображениями

Пример

from PIL import Image

# Открыть изображение
img = Image.open('example.jpg')

# Отобразить информацию об изображении
print(f"Формат: {img.format}, Размер: {img.size}, Режим: {img.mode}")

# Изменить размер и сохранить
resized_img = img.resize((300, 300))
resized_img.save('resized_example.jpg')

# Преобразовать в оттенки серого
gray_img = img.convert('L')
gray_img.save('gray_example.jpg')

Обработка изображений

Пример

from PIL import Image, ImageFilter

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

# Применить фильтр размытия
blurred = img.filter(ImageFilter.BLUR)
blurred.save('blurred.jpg')

# Применить контурный фильтр
contour = img.filter(ImageFilter.CONTOUR)
contour.save('contour.jpg')

# Повернуть изображение
rotated = img.rotate(45, expand=True)
rotated.save('rotated.jpg')

Расширенные функции

Композитинг изображений

Пример

from PIL import Image

# Открыть два изображения
img1 = Image.open('background.jpg')
img2 = Image.open('foreground.png')

# Убедитесь, что оба изображения имеют одинаковый размер
img2 = img2.resize(img1.size)

# Композиция изображений (при условии, что foreground.png имеет альфа-канал)
composite = Image.alpha_composite(img1.convert('RGBA'), img2.convert('RGBA'))
composite.save('composite.png')

Пакетная обработка

Пример

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))
        # Преобразовать в оттенки серого и сохранить
        gray_img = img.convert('L')
        gray_img.save(os.path.join(output_dir, f"gray_{filename}"))
Другие расширения