本文主要是介绍关于ios拍照上传角度问题,使用PHP后端代码进行角度修正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ios设备拍照上传会出现角度不正确的问题,对于这种问题我们可以在PHP后端获取图片的旋转角度然后进行修正即可
特别注意:图片必须是拍照上传的原始图片,切勿在前端通过js进行压缩等“重新生成新图片”操作,否则新生成的图片是没有角度信息的(无Orientation字段),导致PHP无法正确获取角度
1、PHP版本必须按照exif 扩展,否则exif_read_data 函数将无法使用出现致命错误
上代码
代码最有效的方式是在上传文件方法最前面进行处理,对角度处理后,不影响后面的处理逻辑
if(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')||strpos($_SERVER['HTTP_USER_AGENT'], 'iPad')){try{$picAddr=$_FILES['file']['tmp_name']; // 直接获取临时文件$exif = @exif_read_data($picAddr);if(isset($exif['Orientation'])){$image = imagecreatefromjpeg($picAddr);if($exif['Orientation'] == 3) {$result = imagerotate($image, 180, 0);imagejpeg($result, $picAddr, 100);} elseif($exif['Orientation'] == 6) {$result = imagerotate($image, -90, 0);imagejpeg($result, $picAddr, 100);} elseif($exif['Orientation'] == 8) {$result = imagerotate($image, 90, 0);imagejpeg($result, $picAddr, 100);}file_put_contents('file.log',9,8);isset($result) && imagedestroy($result);imagedestroy($image);}}catch(\Exception $e){//echo $e->getMessage();$this->error($e->getMessage());}
}
这篇关于关于ios拍照上传角度问题,使用PHP后端代码进行角度修正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!