移动端上传图片iphone图片旋转以及服务端处理方法

时间:2023-03-09 13:35:41
移动端上传图片iphone图片旋转以及服务端处理方法

判断是否需要旋转

    /**
             *iphone判断图片方向,是否需要旋转图片
             */
            if(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')&&in_array($ext, array('jpg','png','gif','jpeg','jepg'))){
                $exif =exif_read_data($tmp);
                switch ($exif['Orientation']){
                    case 6:
                        self::imgturn($tmp,1,$ext);
                        break;
                    case 3:
                        self::imgturn($tmp,1,$ext);
                        self::imgturn($tmp,1,$ext);
                        break;
                    case 8:
                        self::imgturn($tmp,2,$ext);
                        break;
                }
            }

一下是php旋转方法

function imgturn($src, $direction = 1,$ext) {
        switch ($ext) {
            case 'gif' :
                $img = imagecreatefromgif ( $src );
                break;
            case 'jepg':
            case 'jpg' :
            case 'jpeg' :
                $img = imagecreatefromjpeg ( $src );
                break;
            case 'png' :
                $img = imagecreatefrompng ( $src );
                break;
            default :
                die ( '图片格式错误!' );
                break;
        }
        $width = imagesx ( $img );
        $height = imagesy ( $img );
        $img2 = imagecreatetruecolor ( $height, $width );
        // 顺时针旋转90度
        if ($direction == 1) {
            for($x = 0; $x < $width; $x ++) {
                for($y = 0; $y < $height; $y ++) {
                    imagecopy ( $img2, $img, $height - 1 - $y, $x, $x, $y, 1, 1 );
                }
            }
        } else if ($direction == 2) {
            // 逆时针旋转90度
            for($x = 0; $x < $height; $x ++) {
                for($y = 0; $y < $width; $y ++) {
                    imagecopy ( $img2, $img, $x, $y, $width - 1 - $y, $x, 1, 1 );
                }
            }
        }
        switch ($ext) {
            case 'jepg':
            case 'jpg' :
            case "jpeg" :
                imagejpeg ( $img2, $src, 100 );
                break;
            
            case "gif" :
                imagegif ( $img2, $src, 100 );
                break;
            
            case "png" :
                imagepng ( $img2, $src, 100 );
                break;
            
            default :
                die ( '图片格式错误!' );
                break;
        }
        imagedestroy ( $img );
        imagedestroy ( $img2 );
    }