【问题标题】:how to crop image in codeigniter?如何在codeigniter中裁剪图像?
【发布时间】:2020-09-21 17:33:14
【问题描述】:

我正在使用 codeigniter 来构建一个项目,现在我需要根据用户的选择创建一个 thumb。就像他会给我 X1,Y1,X2,Y2,X3,Y3,X4,Y4 我想根据这 4 个点裁剪图像。我检查了图像处理类。裁剪功能似乎很奇怪。有什么帮助吗?

【问题讨论】:

  • @Pekka .. 如果我想像 P1 = (100,100) P2 = (100,200) P3 = (200,100) P4 = (200,200) 那样裁剪图像怎么办
  • 不知道,对CI的图片编辑功能不熟悉。
  • @Pekka 非常感谢您的宝贵时间
  • 我并没有居高临下之类的意思。我对 CI 一无所知,但我想虽然根本没有答案,但我至少会添加指向我前段时间遇到的那个问题的链接。如果我没记错的话,应该很容易(只是基本的数学)计算出将您的坐标系转换为 CI 使用的坐标系。

标签: php codeigniter image-manipulation


【解决方案1】:

您需要设置 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”的值更改为您喜欢的任何值;)

【讨论】:

  • 这是一个非常好的例子。
【解决方案2】:

我知道图像库中有关此特定功能的文档很少。裁剪功能只要求您提供给轴。然后它将沿着这些轴切割并返回更靠近中心的图像部分。因此,如果您将 x 轴设置为 10 并将 y 轴设置为 10,它将删除图像的顶部 10 像素和图像的左侧 10 像素。同样,如果将 x 轴设置为图像宽度 - 10,它将从图像右侧裁剪 10 个像素。

你的四个位置告诉你的是四个不同的轴。因此,您需要执行两个操作。您只需要更改每个 $this->image_lib->crop() 之间的轴即可。

如何计算这些轴取决于您如何获取这些数据。在一个数组中,作为单独的值等,所以我不会进入这个。

【讨论】:

  • 我知道这已经过时了,但这对我今天真的很有帮助!谢谢@Calle
【解决方案3】:

我没有得到 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();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 2019-02-03
    • 2013-08-06
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多