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')
# Открыть изображение
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')
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')
# Открыть два изображения
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}"))
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}"))