Изменение размера изображения — часто встречающаяся задача при работе с графикой в Python. Однако, простое изменение ширины и высоты может исказить изображение, нарушив его пропорции. Например, если есть изображение размером 800×600 пикселей, и его нужно преобразовать в изображение размером 400×400 пикселей, простое изменение размера приведет к искажению изображения.
В Python для работы с изображениями часто используется библиотека PIL (Python Imaging Library). Она предоставляет широкий спектр инструментов для работы с изображениями.
Для изменения размера изображения с сохранением пропорций необходимо сначала определить соотношение сторон исходного изображения, а потом изменить размер так, чтобы это соотношение сторон сохранялось.
Приведем пример кода, который выполняет это действие:
from PIL import Image def make_thumbnail(filename, size=(128, 128)): # открываем изображение img = Image.open(filename) # определение соотношения сторон width, height = img.size if width > height: ratio = width / size[0] new_height = int(height / ratio) new_size = (size[0], new_height) else: ratio = height / size[1] new_width = int(width / ratio) new_size = (new_width, size[1]) # изменение размера изображения img.thumbnail(new_size, Image.ANTIALIAS) return img
В этом примере функция make_thumbnail
принимает имя файла изображения и размер миниатюры в качестве параметров. Сначала открывается изображение, затем определяется соотношение сторон. Если ширина больше высоты, то высота нового изображения считается на основе соотношения сторон и заданной ширины. В противном случае ширина нового изображения считается на основе соотношения сторон и заданной высоты. Затем изменяется размер изображения с использованием метода thumbnail
, который автоматически сохраняет пропорции изображения.
Таким образом, с помощью библиотеки PIL можно легко изменять размер изображений, сохраняя их пропорции, что позволяет избежать искажений.
Добавить комментарий