Php 如何在codeigniter中裁剪图像?

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,它将从图像右侧

我正在使用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()之间的轴


如何计算这些轴取决于如何获取这些数据。在数组中,作为单独的值等。因此,我将不进行讨论。

您需要设置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使用的坐标系的方法。我知道这已经很旧了,但这对我今天真的很有帮助!谢谢你,这是一个很好的例子。