使用CodeIgniter和Cropper进行图像裁剪

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用CodeIgniter和Cropper进行图像裁剪相关的知识,希望对你有一定的参考价值。

我正在使用Cropper作为GUI来裁剪图像。 Cropper从顶部和左侧给出了X和Y位置以及图像的最终宽度和高度。我将这些数字传递给隐藏的输入字段。在CodeIgniter中,我使用imagemagick使用以下代码裁剪图像:

$this->load->library('image_lib');
$config['image_library'] = 'imagemagick';
$config['library_path'] = '/Applications/MAMP/Library/bin/';
$config['source_image'] = "upload/".$data['image']['file_name'];
$config['x_axis'] = $post['dataX'];
$config['y_axis'] = $post['dataY'];
$config['width'] = $post['dataWidth'];
$config['height'] = $post['dataHeight'];

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

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

ImageMagick使用这样的代码

$cmd = $this->library_path.' -quality '.$this->quality;
/* ... */
if ($action === 'crop')
{
    $cmd .= ' -crop '.$this->width.'x'.$this->height.'+'.$this->x_axis.'+'.$this->y_axis;
}
/* ... */
$cmd .= ' '.escapeshellarg($this->full_src_path).' '.escapeshellarg($this->full_dst_path).' 2>&1';
/* ... */
@exec($cmd, $output, $retval);

基本上有一条线:-crop 100x500 + 10 + 10。此线在4轴处裁剪图像:

  1. 裁剪:X轴距离左侧10px
  2. 裁剪:Y轴距离顶部10px
  3. crop:X-Axis,宽度为100,右边为100
  4. 裁剪:Y轴距离底部500美元

另外,我将新维度存储在我的数据库中:

$this->db->where('id', $id);
$this->db->update("images", array(
  'width' => $post['dataWidth'],
  'height' => $post['dataHeight']
));

裁剪后,我可以比较文件的大小和数据库中的值。除非我不改变裁剪的纵横比,否则值是相同的。当我更改宽高比时,图像以旧的宽高比裁剪。我无法弄清楚原因。

如果您需要更多代码,请告诉我。

答案

请更改您的配置文件

$config = array(
'source_image' => $upload_path.$image_data['file_name'],
'maintain_ratio' => FALSE,
'width' => 220,
'height' => 150,
'x_axis' => 350,
'y_axis' => 50
);
$this->image_lib->clear();
$this->image_lib->initialize($config);
$this->image_lib->crop();

了解更多详情Ckick here并查看示例

以上是关于使用CodeIgniter和Cropper进行图像裁剪的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cropper js 裁剪后图像质量降低

Cropper - 以多边形裁剪图像

如何使用cropper.js 对图像应用裁剪?

jquery - 用“cropper”裁剪图像 - 在画布中

ui-cropper 图像未加载

使用 codeigniter 进行图像裁剪