无法在Codeigniter中创建缩略图(调整大小)配置文件图像

时间:2016-01-09 15:30:44

标签: php codeigniter codeigniter-3

我正在尝试为用户上传个人资料照片时创建个人资料缩略图。我在这里看到一些帮助,因为最近我把手放在Codeiniter上,我也是php的新手。

目前,这会将配置文件图像插入“temp”文件夹,但不会调整其大小。我可能做错了。我是否必须为缩略图创建一个新功能,或者我可以将它与我拥有的功能一起包括在内?

添加新的个人资料图片没问题。添加新图片时替换图片并自动删除图片图片。只是图像的大小调整(缩略图)。

这是控制器:

public function profile_image() {
    if($this->session->userdata('is_logged_in')){
    $username = $this->session->userdata('v_member_username');
    $url1 = $this->my_profile_model->see_if_old_image_exists($username);

    if (empty($_FILES['profile_image']['tmp_name'])) {
        return true;
    }else{
        $url2  = $this->do_upload();
        $this->my_profile_model->update_profile_image($url2, $username);
        if(!empty($url1)){
        $this->my_profile_model->delete_old_profile_image($url1);
        }
        }
    }
}
private function do_upload() {
    $type = explode('.', $_FILES['profile_image']['name']);
    $type = $type[count($type)-1];
    $filename = uniqid(rand()).'.'.$type;
    $url2 = './uploads/temp/'.$filename;
    if(in_array($type, array('jpeg', 'gif', 'png', 'jpg')))
        if (empty($_FILES['profile_image']['tmp_name'])) {
    return TRUE;
    }else{
    if(is_uploaded_file($_FILES['profile_image']['tmp_name']))
        if(move_uploaded_file($_FILES['profile_image']['tmp_name'], $url2));

            return $url2;
    return '';
    // do_thumb
    $this->load->library('image_lib');
    $source_path = $_SERVER['DOCUMENT_ROOT'] . 'uploads/temp/' . $filename;
    $target_path = $_SERVER['DOCUMENT_ROOT'] . 'uploads/profile/';
    $config_manip = array(
        'image_library' => 'gd2',
        'source_image' => $source_path,
        'new_image' => $target_path,
        'maintain_ratio' => TRUE,
        'create_thumb' => TRUE,
        'thumb_marker' => '_thumb',
        'width' => 270,
        'height' => 263
    );
    $this->load->library('image_lib', $config_manip);
    if (!$this->image_lib->resize()) {
        echo $this->image_lib->display_errors();
    }
    // clear //
    $this->image_lib->clear();
    }
}

我的模特是:

// Update profile Image
    function update_profile_image($url2, $username){
        $this->db->set('profile_image', $url2);
        $this->db->where('v_member_username', $username);
        $this->db->update('vbc_registered_members');
    }
// Look If There Was Any Old Image Earlier
    function see_if_old_image_exists($username) {
        $this->db->select('profile_image');
        $this->db->from('vbc_registered_members');
        $this->db->where('v_member_username', $username);
        $query = $this->db->get();
        $query_result = $query->result();
        $row = $query_result[0];
        return $row->profile_image;
    }
// Auto Delete profile Image From Upload Folder On Updating New Image
    function delete_old_profile_image($url1) {
        unlink($url1);
        return TRUE;
    }

请告知。

1 个答案:

答案 0 :(得分:1)

Codeigniter提供了一个用于上传数据的库。 请参阅File Upload LibraryImage Library

这是我用于上传图片,创建缩略图+调整图片大小的代码

/*
* This function returns the path of imagemagick on your system
*/
public static function getLibPath()
{
    if(strlen(self::$_lib_path)==0)
    {
        self::$_lib_path=exec("/bin/bash -lc '/usr/bin/which convert'",$out,$rcode);
    }
    return self::$_lib_path;
}

/*
* This function handles the upload and calls the resizeImage function
* to generate the thumbnail and the resized image
*/
public function update()
{
    $config['upload_path'] = 'your upload path';
    $config['allowed_types'] = 'jpg|png|bmp';
    $config['max_size'] = '8192';//8mb //4096kb - 4mb
    $config['max_width']    = '0';
    $config['max_height']  = '0';
    $config['overwrite'] = false;
    $config['encrypt_name']=true;//this generates a filename for you

    $this->load->library('upload', $config);
    $result = $this->upload->do_upload();


    if($result) {
        $fileInfo=$this->upload->data();

        $this->resizeImage($fileInfo['full_path']);
        $data = array(
            'filename' => $fileInfo['file_name'],
            'orig_file_name' =>$fileInfo['orig_name'],
        );
        //pseudo function for storing the file info
        save_metadata_to_db($data);

    }
    else
    {
        echo $this->upload->display_errors());
    }
}
/*
* This function creates a thumbnail + the resized image
*/
private function resizeImage($filename)
{
   //This function creates a file with the orig. filename + _thumb

    $config['image_library'] = 'ImageMagick';
    $config['source_image'] = $filename;
    $config['create_thumb'] = TRUE;
    $config['maintain_ratio'] = FALSE;
    $config['width']    = 60;
    $config['height']   = 60;
    $config['library_path'] = $this->getLibPath();
    $config['quality'] = '100%';


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

    if ( ! $this->image_lib->resize())
    {
       echo $this->image_lib->display_errors());
    }


    $config['create_thumb'] = False;
    $config['maintain_ratio'] = TRUE;
    $config['width']    = 1080;
    $config['height']   = 1920;

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

    if ( ! $this->image_lib->resize())
    {
        echo $this->image_lib->display_errors());
    }
}