Как повернуть изображение используя Pillow

Поворачиваем изображение в PIL Python

Метод rotate() из модуля Image применяется для поворачивания изображения в зависимости от указанных градусов.

Содержание статьи

Загружаем и сохраняем картинку: guido-van-rossum.jpg

Данный код выведет наше изображение.

Как повернуть изображение используя Pillow

Угол вращения картинки в Pillow

В методе rotate() указываем угол вращения изображения в градусах в качестве первого аргумента. Направление вращения будет против часовой стрелки.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Поворачиваем изображение на 90 градусов:

Полученный результат с повернутой картинкой на 90 градусов против часовой стрелки:

Повернуть картинку на 90 градусов

Поворачиваем изображение на 45 градусов через PIL в Python:

Поворачиваем изображение на 45 градусов

Поворачиваем изображение полностью

Как видно на картинках в примерах выше, по умолчанию размер готового изображения равен размеру изначального изображения, а части повернутого изображения которые попали за пределами изначального размера отсекаются. Если мы поставим параметр expand на True, то повернутое изображение удовлетворит наши требования.

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

Поворачиваем изображение на 90 градусов

Поворачиваем изображение на 45 градусов.

Полученный результат:

Поворачиваем изображение на 45 градусов в Python

Фильтры NEAREST, BILINEAR и BICUBIC в Pillow

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

  • Image.NEAREST (ближайший сосед / по умолчанию);
  • Image.BILINEAR;
  • Image.BICUBIC.

С помощью фильтра Image.BICUBIC детали изображения станут более четким, чем в случае использования фильтра по умолчанию Image.NEAREST.

Image.NEARESTImage.BILINEARImage.BICUBIC
Pillow Image.NEAREST PythonPIL Image.BILINEAR PythonPillow Image.BICUBIC Python

Небольшие различия есть, но у данной картинки они не очень видны. Но, например фильтр Image.BILINEAR сделал картинку более гладкой.

Меняем центр изображения при её поворачивании

Вы можете уточнить позицию центра изображения с помощью параметра center в методе rotate().

Как повернуть изображение используя Pillow

В случае, когда параметр expand=True, область выходящего изображения определяется предположением, что картинка крутится по своему изначальному центру.

Как повернуть изображение используя Pillow

Смещение изображения при поворачивании

Вы можете задать определенное смещение перед вращением изображения с помощью параметра translate. Параметр translate требует два координата (смещения в x направлении,  смещения в y направлении).

Чтобы продемонстрировать данное смещение, мы не будем поворачивать изображение а просто укажем нужное нам смещение.

Полученный результат:

Как повернуть изображение используя Pillow

Поворот изображения на 45 градусов со смещением:

Полученный результат:

Поворачиваем изображение на 45 градусов

Если параметр expand=True, итоговая область изображения определяется предположением, что картинка вращается без смещения.

Итоговое изображение:

Поворачиваем изображение в Python