2010-08-23 78 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