laravel在宝塔环境中,图片旋转

本文介绍如何在Laravel中使用exif_read_data函数检测图片旋转,根据 Orientation 判断并自动旋转图片,确保上传后的图片一致性。涉及安装EXIF扩展、MBSTRING支持和实际代码实现。
摘要由CSDN通过智能技术生成

1.用exif_read_data函数获取图片头部信息判断旋转;
2.扩展安装,宝塔中如图:
在这安装里插入图片描述安装EXIF扩展。本地测试环境如下图:
在这里插入图片描述放出mbstring、exif扩展;
3.图片信息获取及旋转,laravel中代码如下:

 if($request->hasFile('file')&&$request->file('file')->isValid()){
            $file=$request->file('file');
            if(function_exists('exif_read_data')){//判断函数是否能用;如果不能用,则需要开启扩展(extension=php_exif、mbstring)
                $exif = @exif_read_data($file);//读取 EXIF 头信息.加上@避免截图的图片报错(ErrorException: exif_read_data(php571C.tmp))
            }else{
                $exif=true;
            }
            //截图的获取不到头部信息。通过微信发送之后,少了很多属性(没了Orientation)。
            $orientation=is_array($exif)&&in_array('Orientation',$exif)?$exif['Orientation']:1;

            $destinationPath = 'upload/editor'; //文件存储路径
            $filename = date("YmdHis").mt_rand(100,999).".".$file->getClientOriginalExtension();//为了避免简单文件名重复,新生成文件名
            $file->move($destinationPath,$filename);

       		$soure= @imagecreatefromjpeg($filename);//获取原图像的图像资源jpg
	        if(!$soure){
	            $soure= @imagecreatefrompng($filename);//获取原图像的图像资源png
	            if(!$soure){
	                return “我不认识这图片后缀”;
	            }
	        }
	        $url=$destinationPath."/".$filename;
	        //对于特殊图片进行旋转
	        switch ($orientation)
	        {
	            case 8: $soure = imagerotate($soure, 90, 0);
					return ['code'=>1,'msg'=>'上传成功,并且旋转了90°','url'=>$url];
	                break;
	            case 3: $soure = imagerotate($soure, 180, 0);
					return ['code'=>1,'msg'=>'上传成功,并且旋转了180°','url'=>$url];
	                break;
	            case 6: $soure = imagerotate($soure, -90, 0);
	            	return ['code'=>1,'msg'=>'上传成功,并且旋转了-90°','url'=>$url];
	                break;
	        }
			return ['code'=>1,'msg'=>'上传成功,没有旋转','url'=>$url];
}

4.祝您发财。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值