У меня есть веб-сайт, который берет загруженное изображение пользователя и делает три копии - «полную» копию для печати (уменьшена до 1500x1125), «веб» копию для отображения в сети (еще не закодировано) и, наконец, миниатюра.
Итак, вот код - _imageformat () передает параметры (которые я подтвердил, чтобы быть правильными) из класса загрузки CI:
function _imageformat($fullpath, $shortpath, $width, $height)
{
// Теперь мы форматируем изображение.
// Сначала мы проверяем, пейзаж это или портрет
if ($ width> = $ height) // Это пейзаж (или квадрат)
{
// Теперь создаем полное изображение для печати
$ fullimage = $ this -> _ resize ('l', $ fullpath, $ shortpath, $ width, $ height);
}
еще // Это портрет
{
// Теперь создаем полное изображение для печати
$ fullimage = $ this -> _ resize ('p', $ fullpath, $ shortpath, $ width, $ height);
}
}
функция _resize ($ type, $ fullpath, $ shortpath, $ width, $ height)
{
// Настройка параметров конфигурации по умолчанию для работы с изображениями
$ config ['image_library'] = 'gd2';
$ config ['source_image'] = $ fullpath;
$ config ['keep_ratio'] = TRUE;
// Shave the '.jpg' from the end to append some nice suffixes we'll use
$newimage = substr($fullpath, 0, -4).'_full'.".jpg";
$config['new_image'] = $newimage;
if ($type == 'l') // If it's landscape
{
$config['width'] = 1500;
$config['height'] = 1125;
}
else if ($type == 'p') // If it's portrait
{
$config['width'] = 1125;
$config['height'] = 1500;
}
// Load the image library with the specified parameters, and resize the image!
$this->load->library('image_lib', $config);
$this->image_lib->resize();
// Create a thumbnail from the full image
$config['source_image'] = $newimage;
$config['new_image'] = substr($fullpath, 0, -9)."_thumb".".jpg";
$config['maintain_ratio'] = TRUE;
$config['width'] = 150;
$config['height'] = 150;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
return $newimage;
}
Что ДОЛЖНО произойти: В моей папке для загрузки есть три изображения - исходный загруженный файл (назовем его image.jpg), измененный размер (с именем image_full.jpg) и миниатюра (с именем image_thumb.jpg).
Что происходит: В моей папке для загрузки есть только ДВА изображения - исходный загруженный файл (image.jpg) и измененный размер (image_full.jpg). Эскиз никогда не создается.
Интересно, однако, **, что если я помещу код для создания миниатюр сначала , он генерирует миниатюрное изображение, но ** НЕ _full (измененный размер) изображение ,
Так что мне кажется, что он никогда не будет запускаться $this->image_lib->resize()
дважды. Почему бы и нет? Это какая-то любительская ошибка, которую я совершаю, или я упустил что-то очевидное ?! : P
Спасибо!
Jack
Редактировать: Я должен отметить, что да, я знаю, что загружаю библиотеку image_lib
дважды. Я понял, что это был единственный способ передать ему новые параметры. Я также попытался, после изменения размера полного изображения, вызвать $this->_thumbnail()
, который снова загрузил библиотеку туда. Но все же проблема возникла.
Редактировать 2: Я также пытался использовать $this->image_lib->clear()
- все еще не повезло.