Как обрезать изображение в codeigniter? - PullRequest
3 голосов
/ 24 июля 2010

Я использую codeigniter для создания проекта, и сейчас мне нужно создать большой палец в зависимости от выбора пользователя. как он даст мне X1, Y1, X2, Y2, X3, Y3, X4, Y4 я хочу обрезать изображение в зависимости от этих 4 точек. я проверил класс манипуляции с изображениями. функция обрезки кажется очень странной. любая помощь, пожалуйста?

Ответы [ 3 ]

13 голосов
/ 10 июля 2011

Вам необходимо установить ось 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» на любое значение, которое вы предпочитаете;)

4 голосов
/ 25 июля 2010

Я знаю, что документации по этой конкретной функции в библиотеке изображений немного. Функция кадрирования просит вас вводить только оси. Затем он обрежет вдоль этих осей и вернет ту часть изображения, которая находится ближе к центру. Таким образом, если вы установите ось x равной 10, а ось y равной 10, то будут удалены верхние 10 пикселей изображения и левые 10 пикселей изображения. Точно так же, если вы установите ось x равной ширине изображения - 10, она обрежет 10 пикселей справа от изображения.

То, что говорят вам ваши четыре позиции, на самом деле четыре разных оси. Поэтому вам нужно сделать две операции. Вам просто нужно изменить оси между каждым $ this-> image_lib-> crop ().

Способ определения этих осей зависит от того, как вы получаете эти данные. В массиве, в виде отдельных значений и т. Д., Поэтому я не буду вдаваться в это.

1 голос
/ 25 сентября 2012

Я не получаю никаких результатов с библиотекой 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();
        }
    }
...