当图像调整大小时,Codeigniter图像旋转

时间:2016-04-15 16:33:09

标签: php codeigniter

我有一个尺寸为(W-3000 X H-4000)的图像。当我上传并调整大小时,它总是显示为横向模式,意味着新尺寸为w-1067 X h-800。我想创建这张图片800X600用于横向或600X800用于肖像。这是我的代码:

    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'jpg|jpeg|gif|png';
    $config['max_size'] = '5000';
    $this->load->library('upload', $config);

    //check if a file is being uploaded
    if(strlen($_FILES["testimg"]["name"])>0){

        if ( !$this->upload->do_upload("testimg"))//Check if upload is unsuccessful
        {
            $error = array('error' => $this->upload->display_errors());
            print_r($errors);
        }
        else
        {

            $config['image_library'] = 'gd2';
            $config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
            $config['width'] = '1';
            $config['height'] = '800';
            $config['maintain_ratio'] = TRUE;
            $config['master_dim'] = 'height';
            $this->load->library('image_lib',$config); 

            if (!$this->image_lib->resize()){  
                echo "error";
            }else{
                echo "success";
            }
       }      
   }  

在我的代码中,高度始终为800px。适用于3000X4000尺寸图像。但是当我使用4000X3000尺寸图像时呢?任何人都可以帮我解决这个问题吗?感谢

2 个答案:

答案 0 :(得分:2)

$filename = $_FILES['testing']['tmp_name'];
list($width, $height) = getimagesize($filename);

if ($width >= $height)
{
    $config['width'] = 800;
    $config['master_dim'] = 'width';
}
else
{
    $config['height'] = 800;
    $config['master_dim'] = 'height';
}

更短,你可以使用' auto' master_dim的参数,用于确定哪个值更大 - 宽度或高度。

$filename = $_FILES['testing']['tmp_name'];
list($width, $height) = getimagesize($filename);

if ($width >= $height)
{
    $config['width'] = 800;
}
else
{
    $config['height'] = 800;
}

$config['master_dim'] = 'auto';

答案 1 :(得分:2)

感谢@Rpojka的回答。但我用 exif_read_data()修复了它。这是我的代码:

    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'jpg|jpeg|gif|png';
    $config['max_size'] = '6048';
    $this->load->library('upload', $config);

    //check if a file is being uploaded
    if(strlen($_FILES["testimg"]["name"])>0){

        if ( !$this->upload->do_upload("testimg"))//Check if upload is unsuccessful
        {
            $error = array('error' => $this->upload->display_errors());
            print_r($errors);
        }
        else
        {

            $config['image_library'] = 'gd2';
            $config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
            $filename = $_FILES['testimg']['tmp_name'];


            $imgdata=exif_read_data($this->upload->upload_path.$this->upload->file_name, 'IFD0');


            list($width, $height) = getimagesize($filename);
            if ($width >= $height){
                $config['width'] = 800;
            }
            else{
                $config['height'] = 800;
            }
            $config['master_dim'] = 'auto';


            $this->load->library('image_lib',$config); 

            if (!$this->image_lib->resize()){  
                echo "error";
            }else{

                $this->image_lib->clear();
                $config=array();

                $config['image_library'] = 'gd2';
                $config['source_image'] = $this->upload->upload_path.$this->upload->file_name;


                switch($imgdata['Orientation']) {
                    case 3:
                        $config['rotation_angle']='180';
                        break;
                    case 6:
                        $config['rotation_angle']='270';
                        break;
                    case 8:
                        $config['rotation_angle']='90';
                        break;
                }

                $this->image_lib->initialize($config); 
                $this->image_lib->rotate();

            }
       }      
   }  

这是exif方向图

 1        2       3      4         5            6           7          8

888888  888888      88  88      8888888888  88                  88  8888888888
88          88      88  88      88  88      88  88          88  88      88  88
8888      8888    8888  8888    88          8888888888  8888888888          88
88          88      88  88
88          88  888888  888888