Nginx配置 linux IntelliJ IDEA教程 Kotlin web gridview jackson ldap vue优势 vue修改样式 系统后台模板 jq绑定click事件 android小程序源代码 软件测试实战项目 oracle修改字段默认值 git下载项目 matlab自然对数 车载u盘 kubernetes安装 python命令行 python写文件 python查找指定字符 javamysql java学习教程 java正则匹配数字 java多线程处理 登录界面html ntscan 广告代码 球中的小鬼 bat脚本 如何强行退出小米账号 迅雷免费会员号共享 tar解压 微信猜拳 数独软件 movavi 草图大师版本转换器 firefox绿色版 微信昵称特殊字符保存
当前位置: 首页 > 学习教程  > 编程语言

Python - PIL读取图片出现自动旋转的解决方案

2020/8/31 14:36:51 文章标签:

采用电子设备拍摄照片时,如手机、相机等,由于手持朝向的不同,拍摄的照片可能会出现旋转 0、90、180、270 角度的情况,其 EXIF 信息中会保留相应的方位信息.

有些情况下,电脑上打开显示照片是正常的,但在用 PIL 或 OpenCV 读取图片后,图片出现旋转,且读取的图片尺寸也可能与直接在电脑上打开的尺寸不同的问题.

对此,需要在读取图片时,同时解析图片的 EXIF 中的方位信息,将图片转正,再进行后续的其他操作.

实例如下.

from PIL import Image, ExifTags

img_file = '/path/to/img.jpg'
img_pil =Image.open(img_file)

try :
    for orientation in ExifTags.TAGS.keys() : 
        if ExifTags.TAGS[orientation]=='Orientation' : 
            break 
    exif=dict(image._getexif().items())
    
    if   exif[orientation] == 3 : 
        image=image.rotate(180, expand=True)
    elif exif[orientation] == 6 : 
        image=image.rotate(270, expand=True)
    elif exif[orientation] == 8 : 
        image=image.rotate(90, expand=True)

    image.thumbnail((THUMB_WIDTH , THUMB_HIGHT), Image.ANTIALIAS)
    image.show()

except:
        pass

本文链接: http://www.dtmao.cc/news_show_150254.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?