關(guān)鍵詞:圖片旋轉(zhuǎn),EXIF,前端
原文:http://makaiqian.com/exif-orientation/
前端上傳圖像到后臺時,有時候會發(fā)現(xiàn)圖像旋轉(zhuǎn)了。比如這張圖:
后臺服務(wù)器顯示情況

本地顯示是這樣子
一開始以為是前端代碼的問題,其實并不是。這里要引入 EXIF的概念。
EXIF
EXIF(Exchangeable Image File)是“可交換圖像文件”的縮寫,當(dāng)中包含了專門為數(shù)碼相機的照片而定制的元數(shù)據(jù),可以記錄數(shù)碼照片的拍攝參數(shù)、縮略圖及其他屬性信息。
圖像一旦被修改,Exif 信息可能會永久丟失,故編輯 Exif 必須使用專門的軟件。
可以理解成,用來記錄照片屬性和拍攝數(shù)據(jù)的。(可以附加于jpeg等文件中,但png圖片中不會有。)
EXIF中,有一個 Orientation 參數(shù),用于記錄照片生成時的方向。 一共有8個值,分別是:1、2、3、4、5、6、7、8。
正常情況下,拍照只會出現(xiàn)是1、6、3、8這幾個值。2、5、4、7相當(dāng)于鏡像,照像時不會出現(xiàn)這幾種情況。1、6、3、8的效果分別是:
-
1:0度(比如正常情況下我是這樣拍攝的)拍攝角度
-
6:逆時針90度回到正常旋轉(zhuǎn)回正常角度
-
3: 180度回到正常順/逆時針180都能回到正常
-
8:順時針90度回到正常 順時針90度回到正常
Mac上為什么會是正常的呢?
Mac之所以會顯示正常,是因為Mac的圖片“預(yù)覽”功能會自動根據(jù)Orientation參數(shù)處理照片方向。但實際上,照片是旋轉(zhuǎn)的。
用Mac的預(yù)覽的 工具 - 顯示檢查器 查看旋轉(zhuǎn)信息:

Preview 查看旋轉(zhuǎn)信息
這里可以看到方向是6(逆時針旋轉(zhuǎn)90度將回到正常).
順帶說一下,可以看到好多EXIF參數(shù)信息(我是用pad拍的):

圖像EXIF信息
Windows平臺上呢?
windows上默認的圖片預(yù)覽工具沒有做處理,如果拍攝的時候是旋轉(zhuǎn)的,那顯示的也是旋轉(zhuǎn)的。
在Mac上怎么轉(zhuǎn)回來?
-
用Mac的“預(yù)覽”功能打開,再Command + S保存,參數(shù)就改變了,上傳的圖片就正了。Orientation參數(shù)就從6(逆時針旋轉(zhuǎn)90度回到正常)變?yōu)榱?(正常)
- 利用專業(yè)的修改EXIF的工具
關(guān)于前端獲取EXIF
有一個框架可以讀取圖像的原始數(shù)據(jù):Exif.js。IE10以下不兼容。
demo效果:http://code.ciaoca.com/javascript/exif-js/demo/
github地址:https://github.com/jseidelin/exif-js/




