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

Привет, мир!

Сегодня мы рассмотрим, как использовать PIL для изменения размера и обрезки изображения для создания миниатюры.

Для этого урока мы собираемся:

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

Как обычно, я разделю пост на абзацы, так что не стесняйтесь пропустить. В нижнем колонтитуле этого поста вы найдете ссылку на репозиторий Github этого проекта.

0. Требования и цель

Для этого урока вам понадобится:

  • Питон 3.х
  • Следующие пакеты: Подушка
  • "Эта картинка"

Мы собираемся установить требования (кроме Python) на следующем шаге.

Учебник ориентирован на:

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

1. Установка требований

Подушка

Первым делом нам нужно установить подушку:



Как указано на веб-сайте: Pillow — это удобный форк PIL от Alex Clark and Contributors. PIL — это библиотека изображений Python, созданная Фредриком Лундом и его участниками.

Если вам нужно работать с изображениями с помощью Python, Pillow — лучший выбор.

Чтобы установить пакет, просто вставьте эту строку в свой терминал:

pip install pillow

2. Написание кода

Как обычно, начнем с основ:

В этом первом фрагменте кода мы делаем следующие вещи:

  1. Прочитайте изображение из папки с именем images в переменную с именем «im».
  2. Установите желаемый размер эскиза на 1280 пикселей на 720 пикселей.
  3. Установите две переменные (im_size и new_size) в текущий размер изображения.

Для следующего шага нам нужно определить, является ли изображение горизонтальным или вертикальным, и изменить его размер, сохраняя правильное соотношение сторон:

В первом «если» мы проверяем, является ли изображение горизонтальным или вертикальным. Основываясь на этом условии, мы также проверяем, меньше ли изображение уже нужного размера, и если это так, мы ничего не делаем (этот код будет работать только для изображений, превышающих размер эскиза).

Для части изменения размера мы делаем следующее:

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

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

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

Теперь, когда у нас есть изображение с измененным размером, нам нужно обрезать его до нужного размера:

Для этого нам просто нужно определить 4 точки, необходимые для обрезки изображения. После того, как мы получили эти значения, мы можем обрезать изображение, используя метод обрезки.

Наконец, мы можем сохранить изображение, и вы должны увидеть результат, похожий на этот:

Это все на сегодня. Как обычно, код этого туториала вы найдете на моем Github.

Пожертвования и прочее

Если вы хотите поддержать меня, рассмотрите возможность подписки на Medium, используя мою реферальную ссылку:



Если вы не хотите активировать план подписки, но все же хотите поддержать меня, подумайте о покупке моей музыки на Bandcamp:

https://inzaniak.bandcamp.com

Другие 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 и присоединитесь к нашему Коллективу талантов.