Как обрезать и получить два изображения после того, как исходное изображение было загружено с использованием codeigniter

Я создал библиотеку, которая просто загружает 1 изображение, обрезает его с учетом пути, ширины и высоты. Но я не могу понять, как можно обрезать столько изображений, сколько я хочу, и вернуть массив всех созданных им имен файлов. Вот моя библиотека, дайте мне знать, если есть хороший подход. Спасибо

<?php
/*
    Usage:
    -----------------------------------------------------------------------
    $this->load->library('up_image');
    $this->logo = $this->up_image->upload_image(upload_path, width, height);
*/
class up_image
{
    /**
    *   Upload Image Method
    *   ----------------------
    *   @Param: Upload Path
    *   @Param: Width: 
    *   @Param: Height: 
    **/
    public function upload_image($path, $width, $height)
    {
        //load codeigniter instant to load stuff
        $CI =& get_instance();
        $config1 = array(
            'allowed_types' => 'jpg|jpeg|png',
            'upload_path' => $path,
            'max_size' => 4000,
            'remove_spaces' => TRUE,
            'encrypt_name' => TRUE
        );


        $CI->load->library('upload', $config1);
        $CI->upload->display_errors('<p class="errors">', '</p>');

        //if upload do something
        if($CI->upload->do_upload())
        {
            $image_data = $CI->upload->data();

            $config2 = array(
                'image_library' => 'gd2',
                'source_image' => $image_data['full_path'],
                'new_image' => $path . '/' . $image_data['file_name'],
                'maintain_ratio' => TRUE,
                'width' => $width,
                'height' => $height
            );


            $CI->load->library('image_lib', $config2);
            $CI->image_lib->resize();
            return $image_data['file_name'];
        }
        else
        {
            return FALSE;
        }
    }
}

Обновление: я понял это, вот класс и как использовать это для любого, кто пытается сделать что-то. Этот класс загружает изображение и позволяет создавать столько размеров исходной загрузки, сколько вы хотите.

[УЧЕБНЫЙ КЛАСС]

<?php
/*
Author: Sarmen B
URL: sarmenb.com

*/
class up_image
{
    var $path = '';

    /**
    *   Upload Image
    *   ----------------------
    *   @Param: Upload Path
    *   @Param: Width
    *   @Param: Height
    **/
    public function upload_image()
    {
        //load codeigniter instant to load stuff
        $CI =& get_instance();
        $config = array(
            'allowed_types' => 'jpg|jpeg|png',
            'upload_path' => $this->path,
            'max_size' => 4000,
            'remove_spaces' => TRUE,
            'encrypt_name' => TRUE
        );


        $CI->load->library('upload', $config);
        $CI->upload->display_errors('<p class="errors">', '</p>');

        //if upload do something
        if($CI->upload->do_upload())
        {
            //returns the images data as an array
            return $CI->upload->data();
        }
        else
        {
            return FALSE;
        }
    }


    /**
    *   Resize the image
    *   ----------------------
    *   @Param: $data data returned from upload_image()
    *   @Param: Width
    *   @Param: Height
    **/
    public function resize($data, $width, $height)
    {
        $CI =& get_instance();

        $config = array(
            'image_library' => 'gd2',
            'source_image' => $data['full_path'],
            'new_image' => $this->path . '/' . $data['file_name'],
            'maintain_ratio' => TRUE,
            'width' => $width,
            'height' => $height,
            'create_thumb' => FALSE
        );

        $CI->load->library('image_lib', $config);
        $CI->image_lib->resize();

        $CI->image_lib->clear();
        unset($config);
        return $data['file_name'];
    }
}

использование

$img1 = $this->up_image->upload_image();
$thumb = $this->up_image->resize($img1, 140, 120);

$img2 = $this->up_image->upload_image();
$large = $this->up_image->resize($img2, 420, 360);

1 ответ

Решение

Отделите метод обрезки от метода загрузки.

После загрузки выполните обрезку дважды, отдельно для загруженного файла.

Удалить загруженный темп. файл.

Заканчивать.

Другие вопросы по тегам