2010-07-24 63 views
3

我使用codeigniter來建立一個項目,現在我需要根據用戶選擇創建一個拇指。就像他會給我X1,Y1,X2,Y2,X3,Y3,X4,Y4我想根據4點裁剪圖像。我檢查了圖像處理類。作物功能似乎很奇怪。請幫忙嗎?如何在codeigniter中裁剪圖像?

+0

這有幫助嗎? http://stackoverflow.com/questions/2436378/codeigniter-crop-without-maintain-ration – 2010-07-24 12:38:46

+0

@Pekka ..如果我想裁剪像 P1 =(100,100) P2 =(100,200) P3 = (200,100) P4 =(200,200) – trrrrrrm 2010-07-24 12:49:14

+0

我不知道,我不熟悉CI的圖像編輯功能。 – 2010-07-24 13:54:35

回答

4

我知道文檔在圖像庫中的這個特殊功能上是稀疏的。裁切功能只會向軸提供。然後它將沿着這些軸切割並返回更靠近中心的圖像部分。所以如果你將x軸設置爲10,將y軸設置爲10,它將刪除圖像的前10px和圖像的左10px。同樣,如果將x軸設置爲圖像寬度 - 10,它將從圖像右側裁剪10個像素。

你的四個位置告訴你真的是四個不同的軸。因此,你需要做兩個操作。你只需要改變$ this-> image_lib-> crop()之間的軸。

如何找出這些軸取決於你如何獲得這些數據。在一個數組中,作爲單獨的值等,所以我不會進入這個。

+0

我知道這已經很老了,但是這對我今天真的很有幫助!謝謝@Calle – 2012-12-03 14:58:48

13

您將需要設置x軸(左),寬度(右),y軸(頂部)和高度(底部)。您需要確保設置圖像的寬度和高度。

 list($width, $height, $type, $attr) = getimagesize($img); 

     $CI->load->library('image_lib'); 

     $config['image_library'] = 'gd2'; 
     $config['source_image'] = $img; 
     $config['x_axis'] = '10'; 
     $config['y_axis'] = '10'; 
     $config['maintain_ratio'] = FALSE; 
     $config['width'] = $width-10; 
     $config['height'] = $height-10; 

上面的代碼會在左側,右側,頂部和底部裁剪圖像10個像素。你可以隨意將'10'的值改爲任何你喜歡的值;)

+0

+1提供代碼 – 2012-08-13 13:33:40

+0

這是一個非常好的例子。 – Andrew 2015-11-05 07:23:10

1

我沒有得到任何與gd2庫結果。 它總是調整圖像大小,但更新的作物。

所以這裏是imagemagick的解決方案,效果很好。

public function resize_prep($path, $file){ 
     $config['image_library'] = 'imagemagick'; 
     $config['library_path'] = '/usr/bin'; 
     $config['source_image'] = $path; 
     $config['create_thumb'] = TRUE; 
     $config['maintain_ratio'] = FALSE; 
     $config['x_axis'] = 300; 
     $config['y_axis'] = 300; 
     //$config['width'] = 650; 
     //$config['height'] = 353;  
     $config['new_image'] = './uploads/'.$file; 

     $this->load->library('image_lib', $config); 
     //$this->image_lib->crop(); 

     $this->image_lib->initialize($config); 
     if (!$this->image_lib->crop()){ 
      echo $this->image_lib->display_errors(); 
     } 
    }