Проблемы с созданием миниатюр изображений с CodeIgniter - PullRequest
1 голос
/ 15 августа 2011

Я пытаюсь использовать класс манипулирования изображениями для создания миниатюр изображений. Вот мой соответствующий метод:

public function create_thumbnail($source_img, $name, $file_ext)
{
    $config['image_library'] = 'gd2';
    $config['source_image'] = $source_img;
    $config['create_thumb'] = TRUE;
    $config['maintain_ratio'] = TRUE;
    $config['width'] = 50;
    $config['new_image'] = 'C:\xampp\htdocs\\' .  $name . 't' . $file_ext;

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

Когда скрипт запускается, я получаю эту ошибку:

Unable to save the image. Please make sure the image and file directory are writable.

Элемент массива $config['new_image'] оценивается примерно так: C:\xampp\htdocs\EuzIDct.jpg, так что я знаю, что это не так. Исходный файл также существует во время вызова метода, так что это не так.

Кто-нибудь знает, что здесь происходит? Я бы решил проблему Google, но решение на форумах CI гласит: укажите абсолютный или относительный путь, что я и делаю, но, увы, это не работает.

Спасибо!

Ответы [ 4 ]

0 голосов
/ 11 марта 2012

Ваш новый путь к изображению идет не так. он хранит изображение в корневом каталоге. $ config ['new_image'] = '/ имя папки / new_image.jpg';

0 голосов
/ 15 августа 2011

Возможно, у вас проблема с правами доступа.Просто попробуйте изменить права доступа к вашей папке.Хотя ваш подход image_lib-> resize () не является неправильным, я вряд ли рекомендую использовать другой способ изменения размера этих изображений.Обычно 777 разрешений выставляют ваше приложение с точки зрения безопасности.Я рекомендую использовать FTP для перемещения этих миниатюр вместо codeigniter image_lib.Если вы по-прежнему настаиваете на использовании разрешений на запись, щелкните правой кнопкой мыши C: \ xampp \ htdocs \ -> proprieties, закладку безопасности, отредактируйте, добавьте каждого пользователя и предоставьте ему полный доступ (окна).Для Linux-Mac просто простой chmod -R 777.

0 голосов
/ 23 февраля 2012

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

public function create_thumbnail($file_name='2012_02_23_15_06_00_1.jpg'){
    $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;

, используя base_url(), либо ваш image_source, либо ваш new_image будет иметь префикс http://domain_or_localhost.

, используя REAL_PATHкак C://htdocs/blablabla/ просто усложняет такие вещи, как неписываемый и т. д., и т. д.

0 голосов
/ 15 августа 2011

Сначала попробуйте удалить дополнительную обратную косую черту в вашем пути к файлу.

C:\xampp\htdocs\

Далее щелкните правой кнопкой мыши и проверьте права доступа к файлам в этом каталоге.

Если этого не сделать, запустите сервер xampp от имени администратора в качестве кратковременного исправления, чтобы выяснить, есть ли какие-то другие проблемы с разрешениями.

...