Методы resize() и crop() в Pillow

Методы изменения размера изображений с использованием Pillow

Библиотека Pillow в Python предоставляет много инструментов для эффективного изменения размера изображений.Мы рассмотрим методы изменения размера по ширине и высоте, пропорциональное изменение размера и обрезку изображения при изменении размера.

Изменение размера по ширине и высоте

Метод resize() в библиотеке Pillow используется для изменения размера изображения. Этот метод предоставляет возможность установки новых размеров изображения.

Синтаксис и параметры метода resize():

Image.resize(size, resample=Image.NEAREST, box=None)

Параметры:

  • size: Кортеж, содержащий новые размеры изображения в пикселях. Например, (width, height). Этот параметр обязателен.
  • resample (необязательный): Метод интерполяции, используемый при изменении размера изображения. По умолчанию используется Image.NEAREST, что представляет собой ближайший сосед. Другие варианты включают Image.BOX, Image.BILINEAR, Image.HAMMING, Image.BICUBIC, и Image.LANCZOS. Выбор метода интерполяции влияет на качество измененного изображения.
  • box (необязательный): Область, которую нужно обрезать или оставить, заданная в виде кортежа (left, upper, right, lower). Если этот параметр не указан, весь размер изображения сохраняется.

Простейший способ изменить размер изображения - указать новые значения ширины и высоты. Это полезно, например, при подготовке изображений для конкретных мест на веб-сайтах.

from PIL import Image

# Открываем изображение
image = Image.open("example.jpg")

# Устанавливаем новые значения ширины и высоты
new_width = 400
new_height = 400

# Изменяем размер изображения
resized_image = image.resize((new_width, new_height))

# Сохраняем измененное изображение
resized_image.save("resized_example.jpg")

Исходное изображение:

Измененное:

Пропорциональное изменение размера

Часто необходимо изменять размер изображения, сохраняя пропорции, чтобы избежать искажений. Это можно сделать, вычислив новые значения ширины и высоты с сохранением соотношения сторон.

from PIL import Image

# Открываем изображение
image = Image.open("example.jpg")

# Устанавливаем новую ширину, пропорционально вычисляем высоту
new_width = 400
aspect_ratio = image.width / image.height
new_height = int(new_width / aspect_ratio)

# Изменяем размер изображения
resized_image = image.resize((new_width, new_height))

# Сохраняем измененное изображение
resized_image.save("proportional_resized_example.jpg")

В этом примере new_width установлено на 400 пикселей, и высота new_height вычисляется на основе соотношения сторон оригинального изображения. После этого метод resize() используется для изменения размера изображения.

Пропорциональное изменение размера важно, чтобы избежать искажения изображения, сохраняя его естественный вид.

Исходное изображение:

Измененное:

Обрезка изображения при изменении размера

Иногда необходимо обрезать изображение до определенных размеров, особенно когда размеры изображения жестко фиксированы.

Метод crop() в библиотеке Pillow используется для выделения прямоугольной области (кадрирования) из изображения. Этот метод позволяет определить координаты прямоугольной области, которую вы хотите сохранить, и затем создает новое изображение, содержащее только эту область.

Синтаксис метода crop():

Image.crop(box=None)

Параметры:

  • box (необязательный): Область, которую нужно обрезать, заданная в виде кортежа (left, upper, right, lower). Если этот параметр не указан, будет использоваться вся область изображения.

Возвращаемое значение:

Новый объект изображения, представляющий выделенную область.

Пример:

from PIL import Image

# Открываем изображение
image = Image.open("example.jpg")

# Задаем координаты области для обрезки
left = 10
top = 10
right = 410
bottom = 410

# Обрезаем изображение
cropped_image = image.crop((left, top, right, bottom))

# Сохраняем измененное изображение
cropped_image.save("cropped_resized_example.jpg")

В этом примере:

  • left и top представляют координаты верхнего левого угла области для обрезки.
  • right и bottom представляют координаты нижнего правого угла области для обрезки.
  • Метод crop() создает новое изображение, содержащее только выделенную область.

Исходное изображение:

Измененное:

Заключение

Изменение размера изображений с использованием Pillow - это важный инструмент при работе с графикой. Выбор метода изменения размера зависит от конкретных потребностей проекта. Экспериментируйте с предложенными примерами и выбирайте наилучший метод для вашего случая. С помощью Pillow, создание и редактирование изображений становится более доступным и гибким.

Содержание: