You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PIL Image.rotate指定270度却得到90度旋转效果问题求助

解决PIL旋转270度与ImageMagick结果不一致的问题

问题根源

PIL的Image.rotate()方法默认按逆时针旋转指定角度,而ImageMagick的convert -rotate命令默认按顺时针旋转。你调用rotate(270)实际是逆时针转270度(等价于顺时针转90度),这和你预期的顺时针270度效果正好相反。

解决方案

方案1:调整旋转角度

用逆时针90度实现等价的顺时针270度效果:

from PIL import Image

image = Image.open("test.jpg")
# 逆时针90度 = 顺时针270度
image = image.rotate(90, expand=True)
image.save("test_out.jpg")

方案2:使用transpose方法直接指定旋转方向

PIL的transpose()方法提供了明确的旋转方向常量,Image.ROTATE_270对应顺时针旋转270度:

from PIL import Image

image = Image.open("test.jpg")
image = image.transpose(Image.ROTATE_270)
image.save("test_out.jpg")

带EXIF方向修正的完整写法

如果图片包含EXIF旋转标记,建议先修正方向再旋转:

from PIL import Image, ImageOps

image = Image.open("test.jpg")
# 修正图片的EXIF方向
image = ImageOps.exif_transpose(image)
# 执行顺时针270度旋转
image = image.transpose(Image.ROTATE_270)
image.save("test_out.jpg")

内容的提问来源于stack exchange,提问作者djangonaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 11:52:10