2010-08-23 131 views
1

我正在與jcrop和codeigniter,以允許用戶裁剪他們上傳的圖像,我想圖像t裁剪到90x60的大小,但我什麼都不嘗試似乎工作,我目前的代碼看起來像這樣,圖像裁剪與codeigniter

控制器

function save_crop() { 
     $this->load->library('image_lib'); 

     $config['image_library'] = 'gd2'; 
     //$config['library_path'] = '/usr/X11R6/bin/'; 
     $config['source_image'] = './media/images/uploads/company_uploads/' . $this->input->post('image_name'); 
     //$config['new_image'] = './media/images/uploads/company_uploads/cropped' . $this->input->post('image_name').'_'.time(); 
     //die($config['source_image']); 
     $config['x_axis'] = $this->input->post('x'); 
     $config['y_axis'] = $this->input->post('y'); 
     $config['width'] = $this->input->post('w'); 
     $config['height'] = $this->input->post('h'); 
     $config['maintain_ration'] = TRUE; 
     $config['dynamic_output'] = TRUE; 
     $this->image_lib->initialize($config); 

     if(!$this->image_lib->crop()) { 
      echo $this->image_lib->display_errors(); 
     } else { 
      echo "Success"; 
     } 
    } 

JAVASCRIPT

$('#jcrop_target').Jcrop({ 
     onChange: showPreview, 
     onSelect: showCoords, 
     aspectRatio: 1, 
     addClass: 'custom', 
     maxSize: [90,60] 
    }); 

    function showPreview(coords) 
    { 
     var rx = 100/coords.w; 
     var ry = 100/coords.h; 

     $('#preview').css({ 
      width: Math.round(rx * 500) + 'px', 
      height: Math.round(ry * 370) + 'px', 
      marginLeft: '-' + Math.round(rx * coords.x) + 'px', 
      marginTop: '-' + Math.round(ry * coords.y) + 'px' 
     }); 
    }; 

    function showCoords(c) 
    { 
     $('#x').val(c.x); 
     $('#y').val(c.y); 
     $('#x2').val(c.x2); 
     $('#y2').val(c.y2); 
     $('#w').val(c.w); 
     $('#h').val(c.h); 
    }; 

HTML

<?php if(isset($upload_data)) :?> 
      <?php if($upload_data['image_width'] > 90 || $upload_data['image_height'] > 60) : ?> 
      <p>Your image is a little large</p> 
      <form action="<?php echo base_url();?>employer/save_crop" method="post"> 
      <div id="uploaded_image"> 
       <img src="<?php echo base_url();?>media/images/uploads/company_uploads/<?php echo $upload_data['file_name'];?>" id="jcrop_target"/> 
      </div> 
       <div id="uploaded_preview"> 
       <img src="<?php echo base_url();?>media/images/uploads/company_uploads/<?php echo $upload_data['file_name'];?>" id="preview"/> 
       </div> 
       <input type="hidden" name="x" id="x" /> 
       <input type="hidden" name="y" id="y" /> 
       <input type="hidden" name="x2" id="x2" /> 
       <input type="hidden" name="y2" id="y2" /> 
       <input type="text" name="w" id="w" /> 
       <input type="text" name="h" id="h" /> 
       <input type="hidden" name="image_name" value="<?php echo $upload_data['file_name'];?>"/> 
       <input type="submit" name="crop_image" value="Crop" /> 
      </form> 
      <?php endif; ?> 
     <?php endif; ?> 

回答

0

如果您張貼笨被扔的錯誤消息(S),這將使我們成爲了很多更有幫助。

您是否使用Codeigniter的「表單助手」進行驗證?如果「最大範圍」中jCrop設置正確,你不應該有任何問題......

錯誤請:)

1
$config['maintain_ratio'] = TRUE; 

你必須把maintain_ratio而不是maintain_ration