关于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());
            }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值