对于一些在电脑上看起来正常,但使用python的PIL.Image库打开却出现旋转的问题,可以根据exif中的Orientation 参数去进行调整,关于Orientation 参数说明见图片exif信息
如下是python代码
from PIL import Image, ExifTags
def convert_to_rgb(img: Image.Image):
if hasattr(img, '_getexif'):
exifs = img._getexif() or {}
for exif, value in exifs.items():
if ExifTags.TAGS.get(exif) == 'Orientation':
if value == 2:
# 水平翻转
img = img.transpose(Image.FLIP_LEFT_RIGHT)
elif value == 3:
logging.info('图像旋转 180 度')
img = img.rotate(180, expand=True)
elif value == 4:
# 垂直翻转
img = img.transpose(Image.FLIP_TOP_BOTTOM)
elif value == 5:
# 旋转270+水平翻转
img = img.rotate(270, expand=True)
img = img.transpose(Image.FLIP_LEFT_RIGHT)
elif value == 6:
logging.info('图像旋转 270 度')
img = img.rotate(270, expand=True)
elif value == 7:
# 旋转270+垂直翻转
img = img.rotate(270, expand=True)
img = img.transpose(Image.FLIP_TOP_BOTTOM)
elif value == 8:
logging.info('图像旋转 90 度')
img = img.rotate(90, expand=True)
break
return img
网友评论