У меня есть веб-сайт, который загружает загруженное изображение пользователя и составляет три копии - «полную» копию для печати (с уменьшением до 1500x1125), «веб-копию» для отображение в режиме онлайн (еще не закодировано) и, наконец, миниатюра.CodeIgniter/PHP/GD2 Манипуляция изображения воспроизводится
Так вот код - _imageformat() передается параметры (которые я подтвердили, что правильно) от Upload класса КИ:
function _imageformat($fullpath, $shortpath, $width, $height)
{ // теперь форматировать изображение.
// Во-первых, мы проверяем, если это пейзаж или портрет если ($ ширина> = $ высота) // Это пейзаж (или квадрат) { // Теперь создать полный печатный образ $ fullimage = $ this -> _ resize ('l', $ fullpath, $ shortpath, $ width, $ height); } else // Это портрет { // Теперь создаем полное изображение для печати $ fullimage = $ this -> _ resize ('p', $ fullpath, $ shortpath, $ width, $ height); }
}
функция _resize (тип $, $ FULLPATH, $ shortpath, ширина $, $ высота) { // Установка по умолчанию для работы с изображениями опций конфигурации $ конфигурации в [ 'image_library'] = 'gd2'; $ config ['source_image'] = $ fullpath; $ config ['maintain_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).
Что происходит: В моей папке закачек, есть только TWO изображений - оригинальный загруженный файл (Image.jpg), а также изменения размера файл (image_full.jpg). Никакой эскиз никогда не создается.
Что интересно, однако, ** в том, что если поместить код для создания эскизов первого, он генерирует миниатюрное изображение, но ** НЕ _full (размеры) изображения.
Так что мне кажется, что он никогда не будет запускать $this->image_lib->resize()
дважды. Почему нет? Это какая-то любительская ошибка, которую я делаю, или я пропустил что-то очевидное ?! : P
Спасибо!
Джек
Edit: Я должен отметить, что да, я знаю, загружая image_lib
библиотеку дважды. Я понял, что это единственный способ передать ему новые параметры. Я также попытался, изменив размер полного изображения, вызвав $this->_thumbnail()
, который снова загрузил библиотеку. Но все же произошла одна и та же проблема.
Редактировать 2: Я также пробовал использовать $this->image_lib->clear()
- все еще не повезло.