Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Превью фотографии. Как лучше реализовать?


Автор: luser78 21.2.2010, 07:55
Превью фотографии. Как лучше реализовать?
На сервере лежат фотографии разного размера,
необходимо отображать их превью в уменьшенном виде.

Как это реализовать лучше?
Нужно ли создавать для каждой фото уменьшенное фото?

Автор: skyboy 21.2.2010, 09:16
между генерацией каждый раз на лету и генерацией один раз с сохранением на диск надо выбирать второй вариант.
между использованием GD и ImageMagick лучше использовать второй вариант. Если позволяет хостинг.
также надо убедиться, что после смены "основной картинки"(если используемый код позволяет заменить картинку), превью будет пересоздано, а клиент получит новую версию, а не закешированную.
между вариантом "за один проход создать и сохранить превью для всех картинок" и "при первом запросе отсутствующей превью, оно создается и записывается на диск" можно выбрать любой вариант. хотя, если картинок много и нагрузка большая, лучше первый, потому что при индексации поисковиком второй вариант выродится практически в первый, только это может произойти в любой момент.

Автор: MoLeX 21.2.2010, 09:16
Цитата(luser78 @  21.2.2010,  07:55 Найти цитируемый пост)
Нужно ли создавать для каждой фото уменьшенное фото? 

конечно

Автор: Date 21.2.2010, 09:59
Цитата(skyboy @  21.2.2010,  12:16 Найти цитируемый пост)
между использованием GD и ImageMagick лучше использовать второй вариант


я бы не утверждал, что та или иная библиотека лучше подойдет для уменьшения изображения. 
так как с этой функцией они справляются обе одинаково хорошо.
хотелось бы добавить, что у меня на сайте уменьшением занимается GD... и на результат не жалуюсь.  smile 





Автор: IgorIV 21.2.2010, 12:02
Date, сравнивал gd, imagick, gmagick и программы. Как раз для создания превью. По скорости все одинаковы, +-%. По памяти gd проигрывает. Потому как является расширением PHP. В случае imagick gmagick обработкой занимаются сторонние программы.
Результаты прилагаются.
Кстати,
Цитата

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

есть и третий вариант, создавать превью в момент загрузки. Ведь, по-крайней мере, одну из этих превью нужно показать сейчас же.

Автор: skyboy 21.2.2010, 19:49
Цитата(IgorIV @  21.2.2010,  11:02 Найти цитируемый пост)
создавать превью в момент загрузки

да, конечно, только если еще не имеется полторы сотни уже загруженных картинок без превью.
Цитата(IgorIV @  21.2.2010,  11:02 Найти цитируемый пост)
По памяти gd проигрывает. Потому как является расширением PHP.

ага. и без коррекции php.ini на предмет memory_limit у меня на 16Мб отказывается ресайзить уже 2000х2000: вылетает по нехватке памяти. а каждому не объяснишь необходимость ресайзить фото с 6-мегапиксельного фотоаппарата перед загрузкой. а вот в imagemagick есть даже ключ, ограничивающий сверху объем используемой для конвертирования памяти.

Автор: IgorIV 21.2.2010, 20:15
Цитата(skyboy @  21.2.2010,  19:49 Найти цитируемый пост)
а каждому не объяснишь необходимость ресайзить фото с 6-мегапиксельного фотоаппарата перед загрузкой

Поэтому надо осваивать направление в сторону программ-загрузчиков. Я особо не вдавался в подробности, но почти каждый второй фотосервис имеет такое.
http://www.radikal.ru/FOTODESKTOP/fc_about.aspx

Автор: sTa1kEr 22.2.2010, 14:02
В некоторых случаях есть смысл свалить всю работу по ресайзингу на великий и могучий nginx smile
http://habrahabr.ru/blogs/nginx/77873/

Добавлено через 1 минуту и 44 секунды
Цитата(IgorIV @  21.2.2010,  21:15 Найти цитируемый пост)
Поэтому надо осваивать направление в сторону программ-загрузчиков. Я особо не вдавался в подробности, но почти каждый второй фотосервис имеет такое.

Я думаю, для не фотосервисов подойдет и upload_limit

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)