一:问题说明
PHP处理上传图片时候会遇到图片宽高翻转的问题,原图不会,但是缩略图就会出现;
大部分是出现在 width < height的情况下;getimagesize()函数获取到的宽高会是相反的;
原因是iphone手机拍照后图片参数问题;安卓设备大部分正常;
二:解决思路
1、前端利用exif.js解决,不用后端处理;
2、后端PHP利用exif扩展进行解决!(exif_read_data() 函数必须有exif扩展才能使用);
3、后端处理逻辑如下:
//处理iphone上传图片出现的图片宽高翻转问题(原图无需处理)--注意服务器需要开启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上传图片出现的图片宽高翻转问题(原图无需处理)--注意服务器需要开启exif扩展
//先处理原图后再进行图片缩略、裁剪等操作;