Быстро создавайте миниатюры для своих социальных сетей, блогов и других веб-сайтов.
Привет, мир!

Сегодня мы рассмотрим, как использовать PIL для изменения размера и обрезки изображения для создания миниатюры.
Для этого урока мы собираемся:
- Изменение размера изображения с сохранением его исходных пропорций в зависимости от размера, который мы решили
- Обрезать изображение до нужного размера, начиная с центра изображения
- Сохраните изображение в формате JPEG

Как обычно, я разделю пост на абзацы, так что не стесняйтесь пропустить. В нижнем колонтитуле этого поста вы найдете ссылку на репозиторий Github этого проекта.
0. Требования и цель
Для этого урока вам понадобится:
- Питон 3.х
- Следующие пакеты: Подушка
- "Эта картинка"
Мы собираемся установить требования (кроме Python) на следующем шаге.
Учебник ориентирован на:
- Программисты Python среднего уровня
- Людям, которым необходимо программно изменить размер и обрезать большое количество изображений.
1. Установка требований
Подушка
Первым делом нам нужно установить подушку:
Как указано на веб-сайте: Pillow — это удобный форк PIL от Alex Clark and Contributors. PIL — это библиотека изображений Python, созданная Фредриком Лундом и его участниками.
Если вам нужно работать с изображениями с помощью Python, Pillow — лучший выбор.
Чтобы установить пакет, просто вставьте эту строку в свой терминал:
pip install pillow
2. Написание кода
Как обычно, начнем с основ:
В этом первом фрагменте кода мы делаем следующие вещи:
- Прочитайте изображение из папки с именем images в переменную с именем «im».
- Установите желаемый размер эскиза на 1280 пикселей на 720 пикселей.
- Установите две переменные (im_size и new_size) в текущий размер изображения.
Для следующего шага нам нужно определить, является ли изображение горизонтальным или вертикальным, и изменить его размер, сохраняя правильное соотношение сторон:
В первом «если» мы проверяем, является ли изображение горизонтальным или вертикальным. Основываясь на этом условии, мы также проверяем, меньше ли изображение уже нужного размера, и если это так, мы ничего не делаем (этот код будет работать только для изображений, превышающих размер эскиза).
Для части изменения размера мы делаем следующее:
Если изображение горизонтальное, мы устанавливаем размер y равным желаемому значению y, а затем вычисляем соответствующее значение x по следующей формуле:

Если изображение вертикальное, мы устанавливаем размер x равным желаемому значению x, а затем вычисляем соответствующее значение y, используя следующую формулу:

После того, как мы определили новые значения x и y, мы можем изменить размер изображения, используя метод изменения размера.
Теперь, когда у нас есть изображение с измененным размером, нам нужно обрезать его до нужного размера:
Для этого нам просто нужно определить 4 точки, необходимые для обрезки изображения. После того, как мы получили эти значения, мы можем обрезать изображение, используя метод обрезки.
Наконец, мы можем сохранить изображение, и вы должны увидеть результат, похожий на этот:

Это все на сегодня. Как обычно, код этого туториала вы найдете на моем Github.
Пожертвования и прочее
Если вы хотите поддержать меня, рассмотрите возможность подписки на Medium, используя мою реферальную ссылку:
Если вы не хотите активировать план подписки, но все же хотите поддержать меня, подумайте о покупке моей музыки на Bandcamp:
Другие URL-адреса:
Личный сайт: https://inzaniak.github.io
Социальные ссылки: https://inzaniak.github.io/links.html
Linkedin: https://www.linkedin .com/in/umberto-grando-a8527b150/

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.