旋转图片包括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

你可能感兴趣的:(php,php基础,数组)