Php 如何在codeigniter中裁剪图像?
我正在使用codeigniter构建一个项目,现在我需要根据用户的选择创建一个thumb。他会给我X1,Y1,X2,Y2,X3,Y3,X4,Y4,我想根据这4个点裁剪图像。我检查了图像处理类。作物的功能似乎很奇怪。有什么帮助吗?我知道关于图像库中这个特定函数的文档很少。裁剪功能仅要求您向轴提供。然后,它将沿着这些轴进行切割,并返回图像中靠近中心的部分。因此,如果将x轴设置为10,y轴设置为10,则会删除图像顶部的10px和图像左侧的10px。类似地,如果将x轴设置为图像宽度-10,它将从图像右侧裁剪10个像素 你的四个位置告诉你的实际上是四个不同的轴。因此,您需要执行两个操作。您只需要更改每个$this->image\u lib->crop()之间的轴Php 如何在codeigniter中裁剪图像?,php,codeigniter,image-manipulation,Php,Codeigniter,Image Manipulation,我正在使用codeigniter构建一个项目,现在我需要根据用户的选择创建一个thumb。他会给我X1,Y1,X2,Y2,X3,Y3,X4,Y4,我想根据这4个点裁剪图像。我检查了图像处理类。作物的功能似乎很奇怪。有什么帮助吗?我知道关于图像库中这个特定函数的文档很少。裁剪功能仅要求您向轴提供。然后,它将沿着这些轴进行切割,并返回图像中靠近中心的部分。因此,如果将x轴设置为10,y轴设置为10,则会删除图像顶部的10px和图像左侧的10px。类似地,如果将x轴设置为图像宽度-10,它将从图像右侧
如何计算这些轴取决于如何获取这些数据。在数组中,作为单独的值等。因此,我将不进行讨论。您需要设置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”的值更改为您喜欢的值;) 我对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();
}
}
这有用吗@佩卡。。如果我想裁剪像P1=(100100)P2=(100200)P3=(200100)P4=(200200)这样的图像,该怎么办?我不知道,我不熟悉CI的图像编辑功能。@Pekka非常感谢您的时间,我不是有意居高临下或其他什么的。我对CI一无所知,但我想,虽然根本没有答案,但我至少应该添加我不久前遇到的那个问题的链接。如果我没有弄错的话,应该很容易(只需要基本的数学)找到将坐标系转换为CI使用的坐标系的方法。我知道这已经很旧了,但这对我今天真的很有帮助!谢谢你,这是一个很好的例子。