還是那個問題:網上的大胸弟們BB一大堆,沒幾個給的代碼能用的,話不多說,直接上demo:
鏈接:https://pan.baidu.com/s/1jJ6vnt8 密碼:swwm
不要忽視demo中的setTimeout,每個人的機子和瀏覽器的反應速度不同,而exif.js貌似又是異步型的,如果不用setTimeout,會導致在某些瀏覽器(PC或手機)不能旋轉。我在demo設置的時間為1毫秒,這時間是最短的了,不設置的話,本屌的谷歌瀏覽器有50%的幾率不旋轉圖片。我試過同事的iphone6S,要設置到500毫秒才能保證百分百旋轉。(如果各位覺得這樣用戶體驗不好,可先設置圖片透明度為0,旋轉完成后再變成1,即可解決轉圖片的坑爹視覺效果)。
下面介紹何為exif,
EXIF(Exchangeable Image File)是“可交換圖像文件”的縮寫,當中包含了專門為數碼相機的照片而定制的元數據,可以記錄數碼照片的拍攝參數、縮略圖及其他屬性信息,簡單來說,Exif信息是鑲嵌在 JPEG/TIFF 圖像文件格式內的一組拍攝參數,需要注意的是EXIF信息是不支持png,webp等圖片格式的。
對於七牛,可以在圖片后面加?exif參數來獲取圖片的exif信息。
對於Orientation參數,簡單的說是記錄圖片拍攝的相機的旋轉信息,瀏覽器(需要瀏覽器支持)可以根據這個參數中的val信息自動旋轉圖片到正確的方向。
簡單來說:iphone和數碼相機拍出來的照片帶exif,用照片查看器,或在iphone上看圖片是正的,在瀏覽器中用img標簽加載的時候卻是旋轉過的。