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)文章
django-rest-framework 自定義swagger過程詳解
這篇文章主要介紹了django-rest-framework 自定義swagger過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07
使用CodeMirror實現(xiàn)Python3在線編輯器的示例代碼
這篇文章主要介紹了使用CodeMirror實現(xiàn)Python3在線編輯器的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-01-01
自動在Windows中運行Python腳本并定時觸發(fā)功能實現(xiàn)
講一下在Python中寫好了一個腳本之后,怎么自動雙擊一個程序自動就跑起來。以及,怎么在Windows 10中設(shè)計定期定時觸發(fā)并跑腳本,有需要的朋友可以參考下2021-09-09
Python中conda虛擬環(huán)境創(chuàng)建及使用小結(jié)
本文主要介紹了Python中conda虛擬環(huán)境創(chuàng)建及使用小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-03-03

