Автор оригинала: Mike Driscoll.
Иногда вы найдете себя, желая разместить фото. Я обычно хочу сделать это для фотографий, которые я хочу по электронной почте или опубликовать на сайте, так как некоторые из моих изображений могут быть довольно большими. Нормальные люди используют редактор изображений. Я обычно делаю, но для веселья я подумал, что буду смотреть, как это сделать с языком программирования Python.
Самый быстрый способ сделать это – использовать пакет подушки, который вы можете установить с PIP. Как только у вас есть, откройте свой любимый редактор кода и попробуйте следующий код:
from PIL import Image def resize_image(input_image_path, output_image_path, size): original_image = Image.open(input_image_path) width, height = original_image.size print('The original image size is {wide} wide x {height} ' 'high'.format(wide=width, height=height)) resized_image = original_image.resize(size) width, height = resized_image.size print('The resized image size is {wide} wide x {height} ' 'high'.format(wide=width, height=height)) resized_image.show() resized_image.save(output_image_path) if __name__ == '__main__': resize_image(input_image_path='caterpillar.jpg', output_image_path='caterpillar_small.jpg', size=(800, 400))
Здесь мы импортируем Изображение класс от Подушка упаковка. Далее у нас есть функция, которая занимает 3 аргумента: местоположение файла, которое мы хотим открыть, местоположение, которое мы хотим сохранить измененное изображение и кортеж, который представляет новый размер, изображение должно быть, где кортеж – это ширина и высота соответственно Отказ Далее мы открываем наш образ и распечатаем его размер. Затем мы называем объект Image изменить размер () Метод с Размер Текур, в котором мы прошли. Наконец, мы возьмем новый Siz, распечатайте его, а затем показать изображение перед сохранением изменений с измененной резюме. Вот что это выглядит сейчас:
Как видите, метод изменений () не делает каких-либо масштабирования. Мы посмотрим, как это сделать следующим!
Масштабирование изображения
В большинстве случаев вы не захотите изменение изменений вашего изображения, как и в предыдущем примере, если вы не хотите написать метод масштабирования. Проблема с предыдущим методом состоит в том, что она не поддерживает соотношение сторон фото, при изменении размера. Поэтому вместо изменений, вы можете просто использовать Миниатюра () метод. Давайте взглянем:
from PIL import Image def scale_image(input_image_path, output_image_path, width=None, height=None ): original_image = Image.open(input_image_path) w, h = original_image.size print('The original image size is {wide} wide x {height} ' 'high'.format(wide=w, height=h)) if width and height: max_size = (width, height) elif width: max_size = (width, h) elif height: max_size = (w, height) else: # No width or height specified raise RuntimeError('Width or height required!') original_image.thumbnail(max_size, Image.ANTIALIAS) original_image.save(output_image_path) scaled_image = Image.open(output_image_path) width, height = scaled_image.size print('The scaled image size is {wide} wide x {height} ' 'high'.format(wide=width, height=height)) if __name__ == '__main__': scale_image(input_image_path='caterpillar.jpg', output_image_path='caterpillar_scaled.jpg', width=800)
Здесь мы позволяем программисту пройти на входные и выходные пути, а также нашу максимальную ширину и высоту. Затем мы используем условное, чтобы определить, какой наш максимальный размер должен быть, а затем мы называем Миниатюра () Метод на нашем открытом изображении объект. Мы также проходим в Image.antialias Флаг, который нанесет высококачественный фильтр отбора проб, который приводит к лучшему изображению. Наконец, мы открываем недавно сохраненное масштабированное изображение и распечатайте его размер для сравнения с исходным размером. Если вы открываете масштабированный образ, вы увидите, что соотношение сторон фотографии было сохранено.
Обертывание
Игра с подушкой пакет очень весело! В этой статье вы узнали, как изменить размер изображения и как масштабировать фотографию при сохранении своего соотношения сторон. Теперь вы можете использовать эти знания, чтобы создать функцию, которая может произойти через папку и создавать миниатюры всех фотографий в этой папке, или вы можете создать простое приложение для просмотра фотографий, где такая возможность иметь возможность иметь возможности.
Связанное чтение
- Stackoverflow: Python/подушка: как масштабировать изображение
- Конвертировать Фотография на черно-белый в Python
- Как вращать/зеркало фотографии с Python
- Как обрезать фото с Python