Python PIL讀取的圖像發(fā)生自動旋轉(zhuǎn)的實現(xiàn)方法
對于手機、相機等設(shè)備拍攝的照片,由于手持方向的不同,拍出來的照片可能是旋轉(zhuǎn)0°、90°、180°和270°。即使在電腦上利用軟件將其轉(zhuǎn)正,他們的exif信息中還是會保留方位信息。
在用PIL讀取這些圖像時,讀取的是原始數(shù)據(jù),也就是說,即使電腦屏幕上顯示是正常的照片,用PIL讀進來后,也可能是旋轉(zhuǎn)的圖像,并且圖片的size也可能與屏幕上的不一樣。
對于這種情況,可以利用PIL讀取exif中的orientation信息,然后根據(jù)這個信息將圖片轉(zhuǎn)正后,再進行后續(xù)操作,具體如下。
from PIL import Image, ExifTags img = Image.open(file) try: for orientation in ExifTags.TAGS.keys() : if ExifTags.TAGS[orientation]=='Orientation' : break exif=dict(img._getexif().items()) if exif[orientation] == 3 : img=img.rotate(180, expand = True) elif exif[orientation] == 6 : img=img.rotate(270, expand = True) elif exif[orientation] == 8 : img=img.rotate(90, expand = True) except: pass
順便提一句,這里rotate中的“expand = True”是將圖片尺寸也進行相應(yīng)的變換。如果不加這句,則size不變。
詳情參見:https://stackoverflow.com/questions/4228530/pil-thumbnail-is-rotating-my-image
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Python圖像處理庫PIL詳細使用說明
- python使用pil進行圖像處理(等比例壓縮、裁剪)實例代碼
- Python圖像處理庫PIL的ImageDraw模塊介紹詳解
- 在Python中使用PIL模塊處理圖像的教程
- Python圖像處理庫PIL的ImageFont模塊使用介紹
- Python編程中使用Pillow來處理圖像的基礎(chǔ)教程
- Python Pillow.Image 圖像保存和參數(shù)選擇方式
- Python用Pillow(PIL)進行簡單的圖像操作方法
- Python圖像處理庫PIL的ImageGrab模塊介紹詳解
- Python圖像處理PIL各模塊詳細介紹(推薦)
- 使用PIL(Python-Imaging)反轉(zhuǎn)圖像的顏色方法
- Python圖像處理庫PIL的ImageEnhance模塊使用介紹
- 詳解python opencv、scikit-image和PIL圖像處理庫比較
- python PIL Image 圖像處理基本操作實例
相關(guān)文章
Python?Matplotlib繪制箱線圖boxplot()函數(shù)詳解
箱線圖一般用來展現(xiàn)數(shù)據(jù)的分布(如上下四分位值、中位數(shù)等),同時也可以用箱線圖來反映數(shù)據(jù)的異常情況,下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib繪制箱線圖boxplot()函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-07-07淺談Python3.10 和 Python3.9 之間的差異
多年來,Python 進行了大量升級,并且在新版本中添加了許多功能。本文就詳細的介紹 一下Python3.10 和 Python3.9差異,感興趣的朋友可以了解一下2021-09-09django-rest-swagger的優(yōu)化使用方法
今天小編就為大家分享一篇django-rest-swagger的優(yōu)化使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python 根據(jù)數(shù)據(jù)模板創(chuàng)建shapefile的實現(xiàn)
今天小編就為大家分享一篇Python 根據(jù)數(shù)據(jù)模板創(chuàng)建shapefile的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11python解決方案:WindowsError: [Error 2]
使用Python的rename()函數(shù)重命名文件時出現(xiàn)問題,提示 WindowsError: [Error 2] 錯誤,需要的朋友可以參考下2016-08-08pandas基礎(chǔ)?Series與Dataframe與numpy對二進制文件輸入輸出
這篇文章主要介紹了pandas基礎(chǔ)Series與Dataframe與numpy對二進制文件輸入輸出,series是一種一維的數(shù)組型對象,它包含了一個值序列和一個數(shù)據(jù)標簽2022-07-07