Python Pillow – Rotate Image 45, 90, 180, 270 degrees
To rotate an image by an angle with Python Pillow, you can use rotate() method on the Image object. rotate() method rotates the image in counter clockwise direction.
In this tutorial, we shall learn how to rotate an image, using PIL Python library, with the help of example programs.
Syntax – PIL Image.rotate()
The syntax of rotate() method is as shown in the following code block.
- angle – In degrees counter clockwise.
- resample – An optional resampling filter. This can be one of PIL.Image.NEAREST (use nearest neighbour), PIL.Image.BILINEAR (linear interpolation in a 2×2 environment), or PIL.Image.BICUBIC (cubic spline interpolation in a 4×4 environment). If omitted, or if the image has mode “1” or “P”, it is set PIL.Image.NEAREST. See Filters.
- expand – Optional expansion flag. If true, expands the output image to make it large enough to hold the entire rotated image. If false or omitted, make the output image the same size as the input image. Note that the expand flag assumes rotation around the center and no translation.
- center – Optional center of rotation (a 2-tuple). Origin is the upper left corner. Default is the center of the image.
- translate – An optional post-rotate translation (a 2-tuple).
- fillcolor – An optional color for area outside the rotated image.
Example 1: Rotate image by 45 degrees
In the following example, we will rotate the image by 45 degrees in counter clockwise direction.
Python Program
Input Image – sample-image.png

Output Image – rotate-image.png

The size of the original image is preserved. You can make the size of the output image adjust to the rotation.
Example 2: Rotate image and adjust the output size
In the following example, we will adjust the size of output image to the rotation, by using the parameter expand=True.

Example 3: Rotate Image by 90 degrees
You can rotate an image by 90 degrees in counter clockwise direction by providing the angle=90. We also give expand=True, so that the rotated image adjusts to the size of output.

Example 4: Rotate Image by 180 degrees
In this Python Pillow example, we will rotate the image by 180 degrees.

Summary
Concluding this tutorial of Python Examples, we learned how to rotate an image using Python PIL library.
Как повернуть изображение используя Pillow

Метод rotate() из модуля Image применяется для поворачивания изображения в зависимости от указанных градусов.
Содержание статьи
Загружаем и сохраняем картинку: guido-van-rossum.jpg
Данный код выведет наше изображение.

Угол вращения картинки в Pillow
В методе rotate() указываем угол вращения изображения в градусах в качестве первого аргумента. Направление вращения будет против часовой стрелки.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Поворачиваем изображение на 90 градусов:
Полученный результат с повернутой картинкой на 90 градусов против часовой стрелки:

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

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

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

Фильтры NEAREST, BILINEAR и BICUBIC в Pillow
Параметр resample можно использовать для указания определенного фильтра, который будет использоваться при поворачивании изображения.
- Image.NEAREST (ближайший сосед / по умолчанию);
- Image.BILINEAR ;
- Image.BICUBIC .
С помощью фильтра Image.BICUBIC детали изображения станут более четким, чем в случае использования фильтра по умолчанию Image.NEAREST .
| Image.NEAREST | Image.BILINEAR | Image.BICUBIC |
![]() |
![]() |
![]() |
Небольшие различия есть, но у данной картинки они не очень видны. Но, например фильтр Image.BILINEAR сделал картинку более гладкой.
Меняем центр изображения при её поворачивании
Вы можете уточнить позицию центра изображения с помощью параметра center в методе rotate() .
Вращаем изображение в Python через Pillow
Работа с изображением – необходимая составляющая любой программы. В этом нет ничего удивительного, поскольку в свое время именно графические интерфейсы стали ключевым этапом перехода от командной строки до операционных систем в том виде, котором мы их знаем. И картинки являются основополагающей составляющей таких интерфейсов.
Если вы хотите поворачивать изображение на определенный градус, необходимо воспользоваться методом rotate() из модуля Image . Сегодня рассмотрим такие важные аспекты его использования, как настройка угла вращения изображения, как осуществить полный поворот изображения, какие бывают фильтры и зачем они нужны, как изменять центр изображения в процессе его поворачивания, а также как смещать картинку при поворачивании.
Для работы с сегодняшним уроком нам понадобится следующая картинка:
Сохраните ее на свой компьютер. Она будет использоваться в приведенных ниже фрагментах кода.
Настройка угла вращения изображения
Для того, чтобы вращать картинку, необходимо сначала определиться с углом, на который будет осуществляться поворот. Для этого существует специальная функция, которую мы рассмотрим более подробно далее. Она является методом. Следовательно, вызывается из объекта image , через точку.
Но на данном этапе еще рано говорить об этом методе. Для начала необходимо сохранить картинку и открыть ее. Давайте теперь попробуем это сделать, для начала.. Для этого поместите его в тот каталог, в котором будет выполняться программа.

Если мы запустим этот код, будет показана скачанная на предыдущем этапе картинка.
Итак, что нам надо для настройки угла вращения изображения в Pillow? Прежде всего, воспользоваться методом rotate() , в качестве аргумента которого используется угол вращения картинки в градусах. Вращаться картинка будет против часовой стрелки.
Давайте для примера попробуем повернуть картинку на 90 градусов.

После того, как мы запустим этот фрагмент кода, мы получим изображение, которое будет повернуто на 90 градусов против часовой стрелки.
А теперь давайте повернем нашу картинку на 45 градусов. Для этого изменим код, который выше, таким образом, чтобы в качестве аргумента метода rotate() было число 45.

Как полностью повернуть изображение?
Обратите внимание, что стандартный размер готового изображения должен равняться размеру первоначального, а части повернутой картинки, которые попали за пределы изначального размера, отсекаются. А что же делать, если поставить параметр expand на True ? В этом случае картинка будет полностью помещаться в область видимости. По сторонам уже черных границ не будет.
Для того, чтобы убедиться в этом, попробуйте у себя запустить следующий код.
И наша картинка теперь будет такой. Обратите внимание, что действительно черных полос по бокам нет. Но так лишь в случае, если картинка расположена по одной из осей – абсцисс или ординат. 
А вот если угол другой, например, если повернуть картинку на 45 градусов, то тогда избежать черных пространств за пределами картинки не получится. Это четко видно на картинке, которую мы привели выше.
Тем не менее, изображение все равно будет полностью помещаться в окне.

Попробуйте выполнить этот код, и вы убедитесь в этом самостоятельно.
Видим, что нет ничего сложного в том, чтобы повернуть изображение так, чтобы оно органично вписывалось в интерфейс программы.
Зачем нужны фильтры в Pillow?
При поворачивании изображения можно использовать фильтры, чтобы сделать получившуюся картинку более качественной. Для того, чтобы их задать, необходимо воспользоваться параметром resample . Фильтры, в свою очередь, могут быть следующими. Качество их работы зависит от картинки, которая используется. То есть, на одной картинке нет необходимости вообще использовать фильтр, отличный от того, который устанавливается по умолчанию. На другой же качество изображения можно значительно улучшить, если использовать его. Сами же фильтры, доступные для использования пользователем Python, следующие.
- Image.NEAREST – этот фильтр используется по умолчанию. Касается ближайшего соседа.
- Image.BILINEAR. Делает детали изображения более четкими при повороте по сравнению с предыдущим фильтром.
- Image.BICUBIC.

Давайте наглядно покажем разницу между этими фильтрами.
В случае с этой картинкой различия не так заметны, но они есть. Тем не менее, обратите, например, внимание на фильтр Image.BILINEAR . Картинка с его помощью стала более гладкой.
Изменение центра картинки при переворачивании
А что нужно делать, чтобы уточнить позицию центра изображения, которое добавляется в приложение? Для этого необходимо использовать параметр center в методе rotate() . Приведем для наглядности код, где это наглядно изображено.

Здесь мы видим, что после того, как мы запустили этот код, позиция изображения изменилась по сравнению с той, которая была ранее. Попробуйте выполнить этот код, используя скачанную ранее картинку, и убедитесь в этом сами. Также можете потренироваться на любом другом изображении, разницы здесь особой нет для того, чтобы эффективно обучаться.
Если мы используем значение True для параметра expand , то область выходящего изображения определяется предположением, что изображение обращается, ориентируясь на свой изначальный центр.

Смещение картинки во время поворота
Также человек, разрабатывающий приложение, может указать определенное смещение перед тем, как картинка будет поворачиваться. Для этого используется параметр translate . С его помощью можно добиться того, например, чтобы картинка после поворота оказалась в определенной части экрана. Таким образом можно добиться двух целей: повернуть изображение на определенный градус и переместить его. Нет необходимости отдельно прописывать две строчки кода, можно обойтись одной. Согласитесь, это удобно, не так ли?
Давайте теперь попробуем показать, как работает этот параметр, на практике. Для этого мы просто покажем то, какое смещение нам требуется. Да, функцию rotate() можно использовать и для обычного перемещения изображения в пределах экрана. Мы так и сделаем.

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

Получим такой результат. Выглядит привлекательно, не так ли?
Если мы используем установим значение параметра expand на True , то для определения итоговой области картинки интерпретатор будет считать, что смещения нет.
Для демонстрации этого эффекта давайте приведем такой фрагмент кода.

В результате выполнения этих инструкций появится такая картинка. Вы можете самостоятельно в этом убедиться.
В этом примере, в отличие от предыдущего, черный фон находится как в верхнем левом углу, так и в правом нижнем. В прошлом же случае картинка размещалась от одного края окна до другого.
Выводы
Мы разобрали, как поворачивать изображения в Python, как использовать фильтры, перемещать картинку, каким образом можно полностью вписать изображение в окно, даже после поворачивания. Все это можно сделать с помощью метода rotate() . Он может использоваться как для поворота картинки, так и для ее смещения, и это очень удобно.
Попробуйте потренироваться с приведенным выше кодом таким образом. Поставьте себе задачу применительно к теме этой статьи. После этого подумайте, как сегодняшний материал может использоваться, применительно к вашей задаче. Тренировка – это важная составляющая обучения, поскольку именно во время нее совершение тех или иных действий доводится до автоматизма. В дальнейшем все будет делаться как бы само собой, без активных размышлений с вашей стороны.


