CI中的图像类有问题吗?
这是示例
在控制器上:
$this->load->library( array('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->load->library('image_lib', $config);
$this->image_lib->resize();
}
但我没有错误,并且没有创建拇指图像? 我不知道哪里出错了?
答案 0 :(得分:22)
您不应该在foreach中加载image_lib。尝试使用下面的代码
$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();
}
如果它不起作用 - 请检查上传文件夹权限。
答案 1 :(得分:1)
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);
}
}
此代码在保存到表之前将图像上传到文件夹。
答案 2 :(得分:1)
$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);
答案 3 :(得分:1)
如果目标图像包含的宽高比与源图像不同,则源图像将以与目标图像相同的比例进行裁剪。
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";
}}
的分步指南
答案 4 :(得分:0)
我试过下面的代码。请检查。
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());
}
}
答案 5 :(得分:0)
问题是您正在循环中加载库,这是错误,如果您编辑10张图像,您将加载该库10次,这是一个很大的错误,该库必须在构造函数中加载或退出循环
错
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();
}
右
$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();
}
答案 6 :(得分:0)
function compressimg($gbr,$path){
$wd =$gbr['image_width']*0.4; //0.4 mean compress to 40% image_size
$hh =$gbr['image_height']*0.4; //modify yours
//Compress Image
$config['image_library'] = 'gd2';
$config['source_image'] = $path.$gbr['file_name'];
$config['create_thumb'] = FALSE;
$config['maintain_ratio'] = FALSE;
$config['quality'] = '50%';
$config['width'] = round($wd);
$config['height'] = round($hh);
$config['new_image'] = $path.$gbr['file_name'];
$this->load->library('image_lib', $config);
$this->image_lib->resize();
return $gbr['full_path'];
// Put This On Uploader , by user4xn
// return $this->compressimg($this->upload->data(),$config['upload_path']);
}