一:問題說明
PHP處理上傳圖片時候會遇到圖片寬高翻轉的問題,原圖不會,但是縮略圖就會出現(xiàn);
大部分是出現(xiàn)在 width < height的情況下;getimagesize()函數(shù)獲取到的寬高會是相反的;
原因是iphone手機拍照后圖片參數(shù)問題;安卓設備大部分正常;
二:解決思路
1、前端利用exif.js解決,不用后端處理;
2、后端PHP利用exif擴展進行解決!(exif_read_data() 函數(shù)必須有exif擴展才能使用);
3、后端處理邏輯如下:
//處理iphone上傳圖片出現(xiàn)的圖片寬高翻轉問題(原圖無需處理)--注意服務器需要開啟exif擴展
$myImg = 'D:\www\test\abc.jpg'; //原圖地址
$new_thumb = 'D:\www\test\cde.jpg'; //處理后地址
$exif = exif_read_data($myImg);
if (!empty($exif['Orientation'])) { //Orientation說明: 1=旋轉0°,3=逆時針180°,6=順時針90°,8=逆時針90°
$image = imagecreatefromstring(file_get_contents($myImg));
switch ($exif['Orientation']) {
case 8:
$image = imagerotate($image, 90, 0);
break;
case 3:
$image = imagerotate($image, 180, 0);
break;
case 6:
$image = imagerotate($image, -90, 0);
break;
}
imagejpeg($image, $new_thumb, 70);
imagedestroy($image);
$myImg = $new_thumb;
}
//處理iphone上傳圖片出現(xiàn)的圖片寬高翻轉問題(原圖無需處理)--注意服務器需要開啟exif擴展
//先處理原圖后再進行圖片縮略、裁剪等操作;