Многократное изменение размера в CodeIgniter - PullRequest
6 голосов
/ 03 июля 2011

Мне нужно сделать два изображения одной загруженной картинки. Изображения должны иметь фиксированную ширину - 180 и 300 пикселей.

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

$this->_resize($data['upload_data']['file_name'], 300);
$this->_resize($data['upload_data']['file_name'], 180);
private function _resize($file_name, $size) {
            $config['image_library'] = 'gd2';
            $config['source_image'] = 'img/upload/' . $file_name;
            $config['dest_image'] = base_url() . 'img/';
            $config['create_thumb'] = TRUE;
            $config['thumb_marker'] = '_' . $size;
            $config['maintain_ratio'] = FALSE;
            $config['width'] = $size;
            $config['height'] = $size;
            $this->load->library('image_lib', $config);
            $result = $this->image_lib->resize();

            $this->image_lib->clear();
            return;
        }

Я использую CodeIgniter 2.02

Ответы [ 4 ]

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

Не загружайте image_lib несколько раз. Добавьте image_lib в библиотеки автозагрузки и измените

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

до

$this->image_lib->initialize($config);
5 голосов
/ 03 июля 2011

В этом вам может помочь руководство пользователя

Хорошей практикой является использование обработки функция условно, показывая ошибка при неудаче, например:

if ( ! $this->image_lib->resize())
{
    echo $this->image_lib->display_errors();
}
1 голос
/ 23 февраля 2012

Я нашел себе эту проблему.В моем случае я поставил источник изображения и new_image без base_url или REAL_PATH:

public function create_thumbnail($file_name='2012_02_23_15_06_00_1.jpg'){
    $this->layout = false;
    $image_url = PATH_TO_IMAGE_ARTICLE.DIRECTORY_SEPARATOR;
    $config['image_library'] = 'gd2';
    $config['source_image'] = 'assets/img/content/article/'.$file_name;
    $config['create_thumb'] = FALSE;
    $config['maintain_ratio'] = TRUE;
    $config['width'] = 210;
    $config['height'] = 160;    
    $config['new_image'] = 'assets/img/content/article/thumb/thumb_' .  $file_name;

    $this->load->library('image_lib', $config);
    if(!$this->image_lib->resize())
    {
        echo $this->image_lib->display_errors();exit;
    }
    return TRUE;
}

Видите?Вы не ставите

$config['new_image'] = base_url().'assets/img/content/article/thumb/thumb_' .  $file_name;

, но

$config['new_image'] = 'assets/img/content/article/thumb/thumb_' .  $file_name;
1 голос
/ 03 июля 2011

Нилл

Думаю, что проблема имеет место, потому что при первом запуске ваш скрипт перемещает исходный файл в другую папку. Попробуйте использовать:

$config['new_image'] = base_url() . 'img/';

вместо

$config['dest_image'] = base_url() . 'img/';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...