Codeigniter图像调整大小?

问题描述:

我在CI的图像类有问题吗?Codeigniter图像调整大小?

这是例如

在控制器:

$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(); 
} 

但我没有错误,并且不会创建拇指形象? 我不知道哪里错了?

+1

echo $ this-> image_lib-> display_errors();像使用这个函数一样检查Image_lib错误。 – Ts8060

您不应该在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(); 
} 

如果它不会工作 - 检查上传文件夹的权限。

+3

您可以在调整大小后使用清除 – umefarooq

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); 
    } 
} 

此代码上传图片到文件夹保存到表格之前。

$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); 

如果目标图像包含与源图像不同的长宽比,则源图像将按照目标图像具有的相同比例裁剪。

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"; 

}} 

我已经编写了关于我已经如何resize image in codeigniter without loosing quality

试图下面码的逐步指南。请检查。

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()); 
    } 
}