2011-01-23 10 views
0

にトリミング私が伸ばしたり歪んだりすることなく指定する正確な寸法。あなたは私を助けることができればこんにちは、私は基本的に私はCodeIgniterのを使用していますが、私は画像をアップロードして、3種類のサイズの3つの別のフォルダに保存することができるようにしたい、しかし、彼らは収まらなければならない、思っていたサイズ変更とCodeIgniterの

これは私のコントローラです - あなたは私を助けることができれば私が最も感謝されます。あなたがしたいと仮定すると、私はあなたがトラブルの仕事に実際の画像サイザーライブラリを取得したいた場合、またはあなただけの大きさの異なる三つの異なる場所に保存する方法を知りたいかどうかはわからない

$config['upload_path'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'; 
$config['allowed_types'] = 'gif|jpg|png|bmp|jpeg'; 

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

if(!$this->upload->do_upload()) 
{ 
    $error = array('error' => $this->upload->display_errors()); 
    $this->load->view('submit', $error); 
}  
else { 
    $data['upload_data'] = array('upload_data' => $this->upload->data()); 
    $file_name = $this->upload->file_name; 

    list($image_width, $image_height) = getimagesize($_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'.$file_name); 

    // create small size 
    $config['image_library'] = 'GD2'; 
    $config['source_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'.$file_name; 
    $config['new_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name; 
    $config['maintain_ratio'] = TRUE; 
    $config['width'] = 181; 
    $config['height'] = 115; 
    $config['master_dim'] = 'width'; 

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

    if($image_width >= $config['width'] AND $image_height >= $config['height']) 
    { 
     if (!$this->image_lib->resize()) 
     { 
     echo $this->image_lib->display_errors(); 
     } else { 
     if(file_exists($_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name)) 
     { 
      list($image_width, $image_height) = getimagesize($_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name); 
      if($image_height > '115') 
      { 
      $config['source_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name; 
      $y_axis = $image_height - 115; 
      $config['y_axis'] = $y_axis; 
      $config['x_axis'] = 181; 
      $this->image_lib->initialize($config); 
      if (!$this->image_lib->crop()) 
       { 
        echo $this->image_lib->display_errors(); 
       } else { 
        echo "cropped";  
      } 
     } 
     } 
    } 
} 

答えて

2

...後者の場合は、画像サイジングの機能を作成し、ディレクトリ/ etcの異なる高さ/幅/名前を渡す関数を作成したいと思うかもしれません。あなたがしたいこと...それをテストしていませんが、それはこのようなものになります。

function your_function() { 

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

if(!$this->upload->do_upload()) 
{ 
    $error = array('error' => $this->upload->display_errors()); 
    $this->load->view('submit', $error); 
}  
else 
{ 
    $data['upload_data'] = array('upload_data' => $this->upload->data()); 
    $file_name = $this->upload->file_name; 

    list($image_width, $image_height) = getimagesize($_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'.$file_name); 

    $this->image_resize('115', '181', 'small', $file_name, $image_width, $image_height);  
    $this->image_resize('300', '400', 'medium', $file_name, $image_width, $image_height); 
    $this->image_resize('600', '500', 'large', $file_name, $image_width, $image_height);   
} 
} 

private function image_resize($height, $width, $path, $file_name, $image_width, $image_height) 
{ 
    // Resize image settings 
    $config['image_library'] = 'GD2'; 
    $config['source_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'.$file_name; 
    $config['new_image'] = $_SERVER['DOCUMENT_ROOT']."/website/uploads/$path/$file_name"; 
    $config['maintain_ratio'] = TRUE; 
    $config['width'] = $width; 
    $config['height'] = $height; 
    $config['master_dim'] = 'width'; 

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

    if($image_width >= $config['width'] AND $image_height >= $config['height']) 
    { 
     if (!$this->image_lib->resize()) 
     { 
      echo $this->image_lib->display_errors(); 
     } else { 
      if(file_exists($_SERVER['DOCUMENT_ROOT']."/website/uploads/$path/$file_name")) 
      { 
       list($image_width, $image_height) = getimagesize($_SERVER['DOCUMENT_ROOT']."/website/uploads/$path$file_name"); 
       if($image_height > '115') 
       { 
        $config['source_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name; 
        $y_axis = $image_height - 115; 
        $config['y_axis'] = $y_axis; 
        $config['x_axis'] = 181; 
        $this->image_lib->initialize($config); 
        if (!$this->image_lib->crop()){ 
         echo $this->image_lib->display_errors(); 
        } else { 
         echo "cropped";  
        } 
       } 
      }  
     } 
    } 
}