Codeigniter - 上传图像,生成缩略图,保存数据库中的两个目录

时间:2013-04-21 11:33:03

标签: php codeigniter

这是我的模特:

我收到以下错误

 Fatal error: Call to undefined method CI_Image_lib::data() in C:\xampp\htdocs\adcc\application\models\media_model.php on line 58

我的问题:为什么我不能使用data()从保存的缩略图中获取['full_path'](就像我上传的那样)?

有更好的方法吗?谢谢!

public function set_media() {

        $config1 = array(
            'allowed_types' => 'jpg|jpeg|gif|png',
            'upload_path' => $this->gallery_path . '/images',
            'max_size' => 2048
        );

        $this->load->library('upload');
        $this->upload->initialize($config1);
        $this->upload->do_upload();

        $image_data = $this->upload->data();

        $config2 = array(
            'source_image' => $image_data['full_path'],
            'new_image' => $this->gallery_path . '/thumbs',
            'maintain_ratio' => true,
            'width' => 150,
            'height' => 100
        );

        $this->load->library('image_lib', $config2);
        $this->image_lib->resize();
        $image_data2 = $this->image_lib->data();

        $this->load->helper('url');

        $id = url_title($this->input->post('title'), 'dash', TRUE);

        $data = array(
            'id' => $id,
            'name' => $this->input->post('name'),
            'link' => $this->input->post('link'),
            'year' => $this->input->post('year'),
            'actors' => $this->input->post('actors'),
            'image' => $image_data['full_path'],
            'thumb' => $image_data2['full_path']
        );

        return $this->mongo_db->insert('media', $data);
    }

2 个答案:

答案 0 :(得分:1)

您无法从图像库上的data()获取['full_path'],因为$this->image_lib不是上传库的实例而只是没有该方法(因为错误消息指出)。

现在使用您的配置,image_lib将使用与原始图像相同的文件名创建新的已调整大小的图像,并将其保存在您在confing的new_image中指定的目录下。生成的完整路径将保存到image_lib的$full_dst_path属性中,文件夹和文件名也只有$dest_folder$dest_image

所以要使用它们,只需删除该行:

$image_data2 = $this->image_lib->data(); // delete this line

保存时只写:

$data = array(
// ...
'thumb' => $this->image_lib->full_dst_path,
// ...
),

处理Upload或Image_lib库可能返回的错误也是一个好主意。

答案 1 :(得分:0)

您还需要初始化 image_lib 配置数组的部分,然后再调整大小,这对我有用https://stackoverflow.com/a/21187402/2897770

只需在加载 image_lib 后添加此项     $这 - > image_lib->初始化($ CONFIG2);