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
相关产品推荐
相关产品推荐

