最近用PHP做了一個圖片合成程序,前端是通過HTML的file input選取自定圖片,POST到php后台調整尺寸后與事先准備好的背景圖進行合成。
通過測試發現,上傳后的自定圖片有的被旋轉了,有的是正常的。通過多次統計,發現主要受影響的是iOS系統,而且都是豎屏拍攝的照片,安卓系統暫未發現受影響。google一下了解到,這是因為iPhone對拍攝的照片附加了EXIF信息(如鏡頭、光圈、快門、焦距、相機拍攝角度等),圖片被上傳后自動根據相機拍攝角度做了旋轉。
那么解決方案就是根據圖像EXIF信息中的相機拍攝角度(Orientation),再旋轉回來就OK了。
php庫函數exif_read_data()提供了讀取jpg\tiff圖像EXIF信息的功能,函數返回數組中的Orientation鍵值含義對照如下:
1:0°,
3:180°
6:順時針90°,
8:逆時針90°
后端取得圖像EXIF信息后,用imagerotate將圖片旋轉回來即可。(此函數只旋轉圖像,不會旋轉畫布,所以需要更好的方法來實現圖片旋轉)