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