Вывод изображения в виде картинки после проделанных изменений

Статус
В этой теме нельзя размещать новые ответы.

NetStranger

Постоялец
Регистрация
16 Сен 2008
Сообщения
124
Реакции
1
Я так думаю проблема из несложных, но я что то не соображу, туплю как то...
Есть адрес /thumb/70/3/asdasdasd/IMG_0029.JPG
Контроллер thumb перехватывает УРЛ до оригинальной картинки и должен сделать превью, сохранить и тут же его выдать, а если уже сохранен то тупо вывести на экран как картинку.
Истинный адрес до превью должен в итоге быть таким
/3/asdasdasd/thumbs/IMG_0029.JPG
Код примерно такой, используется CI

PHP:
$this->load->library('image_lib');
$width = $this->uri->segment(2);
        $path = '/files_foto/'. $this->uri->segment(3).'/'. $this->uri->segment(4).'/'. $this->uri->segment(5);
         if(!file_exists('./files_foto/'. $this->uri->segment(3).'/'. $this->uri->segment(4).'/thumbs/')) {
                    mkdir('./files_foto/'. $this->uri->segment(3).'/'. $this->uri->segment(4).'/thumbs/');
                }
         $thumb = '/files_foto/'. $this->uri->segment(3).'/'. $this->uri->segment(4).'/thumbs/'. $this->uri->segment(5);
         if(!file_exists('.'.$thumb)) {
            
                        $config['image_library'] = 'gd2'; // выбираем библиотеку
                        $config['source_image'] = '.'.$path;
                        $config['create_thumb'] = TRUE; // ставим флаг создания эскиза
                        $config['maintain_ratio'] = TRUE; // сохранять пропорции
                        $config['width'] = $width; // и задаем размеры
                        $config['height'] = 100;
                        $config['thumb_marker'] = "";
                        $config['new_image'] = '.'.$thumb;

                        $this->image_lib->initialize($config);
                        if ( ! $this->image_lib->resize()) {
                            echo $this->image_lib->display_errors();
                        }
                }


 $config['image_library'] = 'gd2'; // выбираем библиотеку
            $config['source_image'] = '.'.$thumb;
            $config['dynamic_output'] = TRUE;
            $this->image_lib->initialize($config);
            $this->image_lib->resize();

Все работает, но мне кажется эт слишком громозким и медленным. Где подвох?

или же я изначально какую то фигню делаю? моя цель сделать ссылку на превью чтобы они сами делались если их нет.. ну как обычно вообщем
 
А вопрос то в чем? Код как код, система я подозреваю у тя не высоконагруженная, поэтому беспокоиться о скорости тебе нечего.
 
Подвох в алгоритме работы
Скрипт берёт картинку с вашего диска по адресу адрес /thumb/70/3/asdasdasd/IMG_0029.JPG
проверяет если уменьшенная копия,если нет создаёт её и выводит на экран
А надо сделать две директории на диске
исходная картинка real и уменьшенная thumbs
брать исходную картинку сохранять её в директорию real(если она нужна) и делать ее ресайз и сохранять в директорию thumbs
тогда по адресу
/3/asdasdasd/real/IMG_0029.-будет основная картинка
а по /3/asdasdasd/thumbs/IMG_0029-будет уменьшенная
и не придётся налету делать ресайз,что очень нагружает проект.
 
serjinio прав, я бы только добавил, что использование обьектов, еще не значит ООП ;)
Начинать надо со стиля программинга, потихоньку эволюционируя от быдлокодинга к адекватному ООП, тогда и проще будет решать подобные задачи.
 
тогда по адресу
/3/asdasdasd/real/IMG_0029.-будет основная картинка
а по /3/asdasdasd/thumbs/IMG_0029-будет уменьшенная
и не придётся налету делать ресайз,что очень нагружает проект.
Так тумба у ТС и делается при первом обращении к фото. Так что предложенный вариант от ресайзинга на лету не спасёт.

Правильнее тумбы делать при аплоаде фото, а куда их сохранять дело уже десятое.
 
Подвох в алгоритме работы
Скрипт берёт картинку с вашего диска по адресу адрес /thumb/70/3/asdasdasd/IMG_0029.JPG
проверяет если уменьшенная копия,если нет создаёт её и выводит на экран
А надо сделать две директории на диске
исходная картинка real и уменьшенная thumbs
брать исходную картинку сохранять её в директорию real(если она нужна) и делать ее ресайз и сохранять в директорию thumbs
тогда по адресу
/3/asdasdasd/real/IMG_0029.-будет основная картинка
а по /3/asdasdasd/thumbs/IMG_0029-будет уменьшенная
и не придётся налету делать ресайз,что очень нагружает проект.
А проблема-то в чем?
Надо сделать в другой папке? Дык поправь путь до картинок.
 
Вы меня не поняли. у меня щас скрипт и делает так, по этому адресу ищет тумбу оригинальной картинки и выводит на экран с помощью
PHP:
 $config['image_library'] = 'gd2'; // выбираем библиотеку
            $config['source_image'] = '.'.$thumb;
            $config['dynamic_output'] = TRUE;
            $this->image_lib->initialize($config);
            $this->image_lib->resize();
А если в отдельной папке не находит ранее созданной тумбы, он ее сам делает и сохраняет, вопрос лишь в том, правильно ли я вывожу картинку на экран, есть ли более рациональное решение?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху