Codeigniter image resize?

前端 未结 6 1405
故里飘歌
故里飘歌 2020-11-28 14:43

I have problem with image class in CI?

This is example

On controller:

$this->load->library( array(\'image_lib\') );

O

相关标签:
6条回答
  • 2020-11-28 15:14

    You shouldn't load image_lib in foreach. Try to use code below

    $this->load->library('image_lib');
    foreach($results as $row) {
        $config['image_library'] = 'gd2';
        $config['source_image'] = '/img/proizvodi/'.$row->proizvodid.'.jpg';
        $config['create_thumb'] = TRUE;
        $config['maintain_ratio'] = TRUE;
        $config['width']     = 75;
        $config['height']   = 50;
    
        $this->image_lib->clear();
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
    }
    

    If it wont work - check the upload folder permissions.

    0 讨论(0)
  • 2020-11-28 15:15
    function uploadimage()
        {
    
            $file_name                  = $this->input->post('fileName');
            $imageName                  = 'set_'.file_name($_FILES["file"]['name'],date('Ymd_his'));
            $config['image_library']    = 'gd2';
            $config['source_image']     = $imageName;
            $config['create_thumb']     = TRUE;
            $config['maintain_ratio']   = TRUE;
            $config['master_dim']       = 'width'; 
            upload_resize('file','settings', $imageName );
            $config['width']            = 200;
            $config['height']           = 62;
    
            $this->load->library('image_lib', $config);
            $this->image_lib->initialize($config);
            $this->image_lib->resize();
            $this->image_lib->clear();
            $json_data = array(
                    'error'     =>false,
                    'tmp_name'  =>$file_name,
                    'file_name' =>base_url().'assets/uploads/settings/'.$imageName.'?dummy='.rand(0,1000),
                    'file_path' =>$imageName
            );
    
            echo json_encode($json_data);
        }
    }
    

    this code upload image to folder before save to table.

    0 讨论(0)
  • 2020-11-28 15:15

    I have tried below code. Please check.

    if (isset($_FILES['image']) && !empty($_FILES['image']['name'])) {
        $upload_path="uploads/foldername/";
        $newFileName = explode(".",$_FILES['image']['name']);
        $filename = time()."-".rand(00,99).".".end($newFileName);
        $filename_new = time()."-".rand(00,99)."_new.".end($filename);
        $config['file_name'] = $filename;
        $config['upload_path'] = $upload_path;
        $config['allowed_types'] = 'gif|jpg|png|jpeg'; 
        $this->load->library('upload', $config);
    
        if ($this->upload->do_upload('image')) 
        { 
        //Image Resizing 
        $config1['source_image'] = $this->upload->upload_path.$this->upload->file_name;
        $config1['new_image'] =  'uploads/foldername/'.$filename_new;
        $config1['maintain_ratio'] = FALSE;
        $config1['width'] = 181;
        $config1['height'] = 181; 
        $this->load->library('image_lib', $config1); 
        if ( ! $this->image_lib->resize()){ 
        $this->session->set_flashdata('message', $this->image_lib->display_errors('', ''));
    
        }
        $post_data['image'] = $filename;
        }
        else
        { 
        $this->session->set_flashdata('msg',$this->upload->display_errors());
        }
    }
    
    0 讨论(0)
  • 2020-11-28 15:16

    If the destination image contains a different aspect ratio than the source image, then the source image will be cropped in the same ratio of the destination image have.

    public function resize_image($image_data){
    $this->load->library('image_lib');
    $w = $image_data['image_width']; // original image's width
    $h = $image_data['image_height']; // original images's height
    
    $n_w = 273; // destination image's width
    $n_h = 246; // destination image's height
    
    $source_ratio = $w / $h;
    $new_ratio = $n_w / $n_h;
    if($source_ratio != $new_ratio){
    
        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/uploaded_image.jpg';
        $config['maintain_ratio'] = FALSE;
        if($new_ratio > $source_ratio || (($new_ratio == 1) && ($source_ratio < 1))){
            $config['width'] = $w;
            $config['height'] = round($w/$new_ratio);
            $config['y_axis'] = round(($h - $config['height'])/2);
            $config['x_axis'] = 0;
    
        } else {
    
            $config['width'] = round($h * $new_ratio);
            $config['height'] = $h;
            $size_config['x_axis'] = round(($w - $config['width'])/2);
            $size_config['y_axis'] = 0;
    
        }
    
        $this->image_lib->initialize($config);
        $this->image_lib->crop();
        $this->image_lib->clear();
    }
    $config['image_library'] = 'gd2';
    $config['source_image'] = './uploads/uploaded_image.jpg';
    $config['new_image'] = './uploads/new/resized_image.jpg';
    $config['maintain_ratio'] = TRUE;
    $config['width'] = $n_w;
    $config['height'] = $n_h;
    $this->image_lib->initialize($config);
    
    if (!$this->image_lib->resize()){
    
        echo $this->image_lib->display_errors();
    
    } else {
    
        echo "done";
    
    }}
    

    I have prepared a step by step guide on how to resize image in codeigniter without loosing quality

    0 讨论(0)
  • 2020-11-28 15:19

    The problem is that you are loading the library inside the loop, that is the error, if you edit 10 images you will load the library 10 times, big mistake, the library must be loaded in the constructor or out of the loop.

    Wrong

        foreach($results as $row)
            {
    
    $config['image_library'] = 'gd2';
    $config['source_image'] = '/img/proizvodi/'.$row->proizvodid.'.jpg';
    $config['create_thumb'] = TRUE;
    $config['maintain_ratio'] = TRUE;
    $config['width']     = 75;
    $config['height']   = 50;
    
    
    $this->load->library('image_lib', $config); 
    $this->image_lib->resize();
    }
    

    Right

    $this->load->library('image_lib');
    
    foreach($results as $row)
            {
    
    $config['image_library'] = 'gd2';
    $config['source_image'] = '/img/proizvodi/'.$row->proizvodid.'.jpg';
    $config['create_thumb'] = TRUE;
    $config['maintain_ratio'] = TRUE;
    $config['width']     = 75;
    $config['height']   = 50;    
    
    
    $this->image_lib->initialize($config);
    $this->image_lib->resize();
     $this->image_lib->clear();
    }
    
    0 讨论(0)
  • 2020-11-28 15:37
    $config['upload_path']          = './berkas/content/';
    $config['allowed_types']        = 'gif|jpg|png';
    $config['max_size']             = 0;
    $config['max_width']            = 1024000;
    $config['max_height']           = 7680000;
    $config['encrypt_name']           = TRUE;
    $config['overwrite']           = FALSE;
    
    $this->load->library('upload', $config);
    
            $upload_data = $this->upload->data();
            $file_name = $upload_data['file_name'];            
            $params['gambar'] = $file_name;
            $this->load->library('image_lib');
            $config['image_library'] = 'gd2';
            $config['source_image'] = './berkas/content/'.$file_name;
            $config['create_thumb'] = FALSE;
            $config['maintain_ratio'] = TRUE;
            $config['width']     = 550;
            $config['height']   = 350;
    
    $params = array('gambar' => $file_name);
    
    0 讨论(0)
提交回复
热议问题