繁体   English   中英

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

[英]Codeigniter image rotate when image resize

我有一个尺寸为(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尺寸图片怎么办? 有人可以帮我解决这个问题吗? 谢谢

$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';
}

甚至更短,您可以对master_dim使用'auto'参数,该参数将确定哪个值更大-宽度或高度。

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

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

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

感谢@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM