Проблема. Я хочу настроить функцию загрузки изображений на своем веб-сайте. Но я хотел показать как оригинальное изображение, так и небольшое уменьшенное изображение.
Выбор – в каком направлении лучше – создать отдельное изображение (уменьшенное изображение) в каталоге при загрузке изображения или показать меньшую версию, уменьшив ее высоту и ширину в фиксированном соотношении каждый раз, когда изображение запрашивается?
Как я делаю это в настоящее время – более поздний звук звучит лучше для меня, потому что он не будет занимать много места на диске, но он должен изменить размер изображения снова и снова. Какой из них лучше?
Это общий вопрос для веб-приложения, а не конкретный язык.
Любая идея, как это делают facebook или google?
Вопрос. Мой вопрос заключается в том, как создавать эскизы и показывать их на веб-сайте – создавая копию исходного изображения с меньшим размером или генерируя миниатюру динамически каждый раз, когда она запрашивается.
Создание миниатюры при загрузке – почти всегда лучший вариант. Если хранилище вызывает беспокойство, вы можете конвертировать их по запросу и затем кэшировать результат в хранилище. Если его запрос еще раз до истечения срока действия кэша, преобразование не потребуется.
Хранение часто довольно дешево, поэтому я бы, вероятно, не пошел на эту дополнительную сложность.
Просто создайте миниатюру и сохраните на диск. Место на жестком диске очень дешево. 70 фунтов стерлингов для пары туберкулеза.
Создание миниатюры – лучший вариант, и это не требует большого дискового пространства. При открытии ваших страниц ваш клиент также будет загружать меньший размер. преобразование изображения по запросу будет стоить больше времени для загрузки вашей страницы;)
Если вы посмотрите на большинство CMS с этой встроенной функциональностью, они почти всегда создают уменьшенное изображение изображения при загрузке и хранят его на сервере.
Это восходит к возрасту, говорящему «делай то, что делает Google», но с CMS.
«Лучше» зависит от установленных вами критериев.
Для большинства приложений дисковое пространство не является проблемой – и если сохранение миниатюры является проблемой, сохранение оригинала должно быть серьезной проблемой – приличная цифровая фотокамера будет работать со многими мегабайтами, тогда как миниатюра не должна превышать 50 КБ.
Полоса пропускания и производительность (как воспринимается клиентом), как правило, представляют большую проблему. Если у вас много людей, просматривающих галерею миниатюр изображений, то 50-килобайтные миниатюры будут значительно быстрее (и дешевле в полосе пропускания), чем при использовании изображений с высоким разрешением в мегабайтах.
Кроме того, при обслуживании эскизов по URL-адресу, например <img src="images/thumbnail/foobar.jpg">
и настройке соответствующих заголовков кеша, вы должны получить много кэширования ниже по потоку – это менее вероятно, если вы подаете изображение как <img src="thumbnail.php?image=image/foobar.jpg>
потому что кеши относятся к querystrings довольно консервативно.
Я работал на веб-сайте, который управлял сотнями тысяч изображений продуктов; мы создали ImageMagick для автоматического создания эскизов. В зависимости от вашей настройки, это может иметь смысл сделать это, когда сначала будет запрошена эскиз, а не когда файл будет загружен, потому что конвертация может быть довольно ресурсоемкой, а делать это при загрузке займет больше времени, чем мы хотели подождать , Современное оборудование может сделать это без проблем.
Также возникает вопрос о сохранении эскизов в синхронизации с оригиналами – если пользователь загружает новое изображение, вы должны убедиться, что обновили эскиз; если оригинал удален, вы также должны удалить миниатюру.