这是我的模特:
我收到以下错误
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);
}
答案 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);