今天遇到一个图片存在自动旋转的问题,也就是图像exif 字段不为空的问题,写个简单脚本记录一下。
import traceback
import PIL
from PIL import Image, ImageOps
def image_transpose(img_path):
"""
:param img_path: 图像路径
:return: pil对象
"""
try:
# print(PIL.ExifTags.TAGS) # 获取exif 所以标签 是个字典
image = Image.open(img_path) # 读取图像
exif_data = image._getexif() # 获取exif信息
if exif_data and exif_data.get(274):
orientation = exif_data.get(274)
if orientation == 3:
print('image rotate 180 度')
image.rotate(180, expand=True)
return image
elif orientation == 6:
print('image rotate 270 度')
image.rotate(270, expand=True)
return image
elif orientation == 8:
print('image rotate 90 度')
image.rotate(90, expand=True)
return image
else:
print('正常图片')
return image
trans_pose_image = ImageOps.exif_transpose(image) # 也可以采用 这种方式 进行矫正
return trans_pose_image # 返回矫正后的图像
except:
print(traceback.print_exc())
return None # 异常情况反回空
if __name__ == '__main__':
img_path = 'test1.jpg'
print(image_transpose(img_path))
相关参考:
[1]Python Image._getexif方法代码示例
声明: 总结学习,有问题或不当之处,可以批评指正哦,谢谢。