2011-05-02 5 views
1

잘라낸 이미지가 171 x 118px가되도록 이미지를 자르려고합니다 (컬을 통해 움 직입니다). 이미지의 크기를 171x118px로 다시 조정하는 대신 이미지와 자르기의 모든 171x118 픽셀 영역을 잡아낼 수 있도록 그런 방식으로 작업하려고합니다. 원본 이미지가 http://www.mirzar.com/ember/actual-image.png이므로 http://www.mirzar.com/ember/cropped.png 대신 http://www.mirzar.com/ember/desired-crop.png을 출력해야합니다. Imagemagick으로 CodeIgniter에서 중력 줌을 수행하는 방법은 무엇입니까?

여기에 지금까지 내 코드입니다 :

  $config['image_library'] = 'ImageMagick'; 
      $config['library_path'] = '/usr/bin/'; 
      $config['create_thumb'] = TRUE; 
      $config['maintain_ratio'] = FALSE; 
      $this->load->library('image_lib', $config); 
      $dimensions[0] = array('x'=>171, 'y'=>118, 'dir'=>'small'); 
      $dimensions[1] = array('x'=>154, 'y'=>105, 'dir'=>'medium'); 
      $dimensions[2] = array('x'=>312, 'y'=>164, 'dir'=>'large'); 
      for ($i=0; $i<3;$i++){ 
       $filesize = filesize($filename); 
       $config['image_library'] = 'ImageMagick'; 
       $config['library_path'] = '/usr/bin/'; 
       $config['source_image'] = $filename; 
       $config['create_thumb'] = TRUE; 
       $config['maintain_ratio'] = FALSE; 
       $config['width'] = $dimensions[$i]['x']; 
       /* $config['height'] = $dimensions[$i]['y']; */ 
       $config['master_dim'] = 'width'; 

       $this->image_lib->test(); 
       $this->image_lib->initialize($config); 
       $this->image_lib->resize(); 
       $this->saveThumbnail($imageid, $ext, $dimensions[$i]['dir'], $i); 
      } 

      // regular site pic 
      $config['width']   = 171; 
      $config['height']   = 218; 
      $this->load->library('image_lib', $config); 
      $this->image_lib->resize(); 

답변

1

를 첫째로, 당신의 '작은'와 '매체'치수는 차원 배열의 잘못된 방향으로 둥근 것 같다.

작업 자체에 대해 간단히 코드 서명자의 '자르기'기능을 사용하여 미리보기 이미지의 정확한 크기를 제공 할 수 있습니다. 몇 가지 방법을 사용할 수 있습니다 :

1) 이미지 비율을 유지하고 $config['master_dim'] = 'auto';을 사용하는 것을 제외하고는 설명하는 방법으로 이미지의 크기를 조정하십시오. 자르기 기능을 사용하여 새로 크기가 조정 된이 이미지를 원하는 크기로자를 수 있습니다. 이 방법에는 미리보기 이미지보다 작은 이미지를 보정하는 보너스가 추가되었습니다!

2) 처음부터 이미지를 자르고 크기를 모두 무시하십시오.

어느 쪽이든, 당신과 같이 뭔가를 추가 할 것입니다 :

$config['x_axis'] = 0; 
$config['y_axis'] = 0; 
$config['width'] = $dimensions[$i]['x']; 
$config['height'] = $dimensions[$i]['y']; 
$this->image_lib->initialize($config); 
$this->image_lib->crop(); 

각 이미지에 대한 '최적'를 해결하는 것입니다 훨씬 깔끔한 썸네일을 만들 것입니다 세 번째 방법. 다음과 같은 내용 :

$size = getimagesize($filename); 
$width_ratio = floor($size[0]/$dimensions[$i]['x']); 
$height_ratio = floor($size[1]/$dimensions[$i]['y']); 
$min_ratio - min($width_ratio, $height_ratio); 
$left = (($size[0] - ($dimensions[$i]['x'] * $min_ratio))/2); 
$right = (($size[1] - ($dimensions[$i]['y'] * $min_ratio))/2); 
$config['width'] = ($dimensions[$i]['x'] * $min_ratio); 
$config['height'] = ($dimensions[$i]['y'] * $min_ratio); 
$config['x_axis'] = $left; 
$config['y_axis'] = $right; 
$this->image_lib->initialize($config); 
$this->image_lib->crop(); 

그런 다음이 새 이미지의 크기를 원하는 축소판 크기로 조정하십시오.

염두에두고, 나는 0보다 작은 비율을 확인하지 않았으며, 나는 당신에게 맡길 것입니다.

감사 eyaka1

+0

또한 셋째 방법 I은 ImageMagick이 라이브러리 'gravity- 센터'와 동일한 효과를 추가 한 점에 유의. – eyaka1

관련 문제