旋转图片包括png图片,不会出现失真情况

 

/**
	 * 图片旋转处理
	 * @param  string  $src 图片本地路径
	 * @param  integer $degrees 旋转角度,90逆时针旋转90度,-90顺时针旋转90度
	 */
	public function imgturn($src,$degrees)
    {
        $ext = pathinfo($src)['extension'];
        switch ($ext) {
            case 'gif':
                $img = imagecreatefromgif($src);
                $img2 = imagerotate($img, $degrees, 0);//旋转图片
                imagegif($img2, $src, 100);
                break;
            case 'jpg':
            case 'jpeg':
                $img = imagecreatefromjpeg($src);
                $img2 = imagerotate($img, $degrees, 0);//旋转图片
                imagejpeg($img2, $src, 100);
                break;
            case 'png':
                $img = imagecreatefrompng($src);
                /*获取大小*/
			   	$width = imagesx($img);
    			$height = imagesy($img);
    			$img2 = imagecreatetruecolor($width, $height);
    			//上色 
				$color=imagecolorallocate($img2,255,255,255); 
				//设置透明 
				imagecolortransparent($img2,$color); 
				imagefill($img2,0,0,$color);
                if($degrees==-90){
                	//顺时针旋转90度
            	     for ($x = 0; $x < $width; $x++) {
		                for($y=0;$y<$height;$y++) {
		                    imagecopy($img2, $img, $height-1-$y,$x, $x, $y, 1, 1);
		                }
		            }
                }

                if($degrees==90){
                	//逆时针旋转90度
                	for ($x = 0; $x < $height; $x++) {
		                for($y=0;$y<$width;$y++) {
		                    imagecopy($img2, $img, $x, $y, $width-1-$y, $x, 1, 1);
		                }
		            }  
                }
                imagepng($img2,$src);
                break;
            default:
                die('图片格式错误!');
                break;
        }
        imagedestroy($img);
        imagedestroy($img2);
    }

来自于datou:https://github.com/datou-leo/ci

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reg183

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值