resize () не работает с использованием класса манипулирования изображениями - PullRequest
0 голосов
/ 11 июля 2010

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

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

$data = $this->upload->data();

$config_image['image_library'] = 'gd';
$config_image['source_image'] = $data['full_path'];
$config_image['new_image'] = 'uploads/thumbs/';
$config_image['create_thumb'] = TRUE;
$config_image['maintain_ratio'] = TRUE;
$config_image['width'] = 750;
$this->load->library('image_lib', $config_image);

if ( !$this->image_lib->resize())
{
    $this->session->set_flashdata('message',  $this->image_lib->display_errors());
} 

Кроме того, я хочу изменить размер изображения, чтобы он соответствовал max-width = 750, но сохранил соотношение. Что я делаю правильно, чтобы добиться этого? Спасибо!

Ответы [ 5 ]

1 голос
/ 14 декабря 2017

Я знаю, что это слишком поздно, но недавно у меня возникла та же проблема, и я решил ее, инициализируя класс.

Пример CodeIgniter не работает, сначала нужно загрузить класс:

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

Затем, после установки необходимого конфига, вы инициализируете класс следующим образом:

$this->image_lib->initialize($config);

Это сработало для меня сразу.

Я публикую это на тот случай, если у кого-то еще возникнет такая же проблема, поэтому они решают ее с помощью CodeIgniter, а не другой библиотеки.

1 голос
/ 12 июля 2010

Может быть, оба, ширина и высота должны быть указаны?Просто попробуйте сделать это с фиксированной высотой (и выполните масштабирование с учетом соотношения сторон на втором шаге).

Чтобы сохранить это соотношение, достаточно просто сначала вычислить соотношение сторон изображения, а затем высоту цели:1003 *

$target_width = 750;
$image_aspect_ratio = $image_width / $image_height;
$target_height = $target_width / $image_aspect_ratio;

Вы можете вывести это из простой математики: r = w / h.Итак, w = r * h (= ширина цели, если у вас фиксированная высота) и h = w / r (= высота цели, если у вас фиксированная ширина).

1 голос
/ 12 июля 2010

Вы определенно должны использовать GD2.

Класс манипулирования изображениями в CI иногда немного темпераментен. Если вы не можете заставить вещи работать, проверьте timthumb . Это небольшой php-скрипт с одним файлом, который изменяет размеры изображений на лету и использует систему кеширования. Вы просто передаете необходимые параметры через атрибут src вашего тега изображения. Очень просто, работает очень хорошо и намного меньше головной боли, чем класс манипулирования изображениями CI.

0 голосов
/ 12 июля 2010

Простой вопрос, правильные разрешения для файла?Другой совет - установить в журнале ошибок КИ самый высокий уровень и посмотреть, выводит ли он что-нибудь.

0 голосов
/ 11 июля 2010

удалить $config_image['new_image'] = 'uploads/thumbs/'; и изменить $config['image_library'] = 'gd'; на $config['image_library'] = 'gd2';

Также убедитесь, что массив $ data содержит полный_путь.

...