Как лучше создавать превью для картинок?

Тсарь

Новичок
Как лучше создавать превью для картинок?

Не знаю в правильный форум пишу, но вопрос действительно интересует.

Ситуация: есть некая cms. В ней можно закачивать картинки на сервер, после закачки они отображаются на страницах сайта. Одна и та же картинка на некоторых страницах (утрировано) отображается в размере 100х100, на других 150х150, на третьих например 600х600. Притом что в оригинале у неё размер 2000х2000. Вопрос: когда именно лучше производить ресайз?

1. Непосредственно после закачки картинок на сервер создавать превьюхи картинки для всех возможных страниц, пользователи сайта видят созданные при закачке превью. Проблема в том, что при загрузке большого количества больших изображений обработка идёт довольно долго. Плюс что делать если при смене дизайна все картинки 100х100 нужно будет изображать как 110х110? Пересчитывать все превью заново?

2. В cms картинки загружаются в оригинальном размере, preview для них не создаётся вообще. Создание preview происходит автоматически при первом обращении посетителя сайта к картинке в том размере, который нужен для этой страницы. Для последующих посетителей картинка уже берётся из кэша. Однако заставлять посетителя ждать пока все картинки обработаются имхо не есть правильно.

3. Создавать превью по cron. Возможно в сочетании с п.2.

Как лучше решить эту проблему? Как у вас реализовано создание thumbnails?
 
Тсарь
Проблема в том, что при загрузке большого количества больших изображений обработка идёт довольно долго.
Долго - это сколько? Если дольше 10-15 секунд - то я бы сделал по крону, при этом показывая посетителям стандартные превью с надписью "Превью скоро будет сгенерировано"

что делать если при смене дизайна все картинки 100х100 нужно будет изображать как 110х100? Пересчитывать все превью заново?
Что имеется в виду под "сменой дизайна". Если это именно смена дизайна, да еще настолько глобальная, то естественно надо пересчитать все превью заново, а как иначе-то?..
 
если все глобавльно - то генери превью тока тогда, когда его запрашивают - или по крону. Лучше по запросу.
 
Лучше создавать превью во время первого обращения, или сразу после загрузки
 
kvf77
если все глобавльно - то генери превью тока тогда, когда его запрашивают - или по крону. Лучше по запросу.
Если проблема в том, что превьюшки генерятся долго, то какая разница делать это сразу после загрузки или при запросе? И в том, и в другом случае загрузка страницы откладывается на время необходимое для генерации и возможен обрыв соединения. Или я чего-то непонимаю?
 
что делать если при смене дизайна все картинки 100х100 нужно будет изображать как 110х100? Пересчитывать все превью заново?
а изображение не поползет? 100х100 -> 110х100
по какому алгоритму создаются превью?
 
Думаю, лучше 1 или 3 вариант. Ждать пока превьюшка сгенерится обычному пользователю не стоит. А вот админу или крону пофигу, они могут и подождать:))
 
Angerslave
Ну, не так уж и долго обычному пользователю ждать, если он успел раньше проверяющего результаты изменения админа. Хоть полное время перегенерации всех картинок может быть значительным, пользователю они будут грузиться по очереди (не оставляя его перед пустой страницей "без ничего" надолго). И не все сразу, а только те, которые присутствуют на запрошенной странице. Лично я у себя генерю превьюшки по запросу пользователя (т.е. 2).
 
Непосредственно после закачки картинок на сервер создавать превьюхи картинки для всех возможных страниц
Пересчитывать все превью заново

-~{}~ 20.03.08 21:01:

зы:
при смене дизайна
от поступления инфы "о смене дизайна" до внедрения нового дизайна, надеюсь, проходит больше времени, чем время на пере-ресайза всех картинок ?..
 
я думаю, там опечатка. 110х110
если было 100х100 а стало 110х110,
то и замарачиваться с ресайзом нет смысла, так как и то, и то изображение - квадрат (1:1), следовательно пропорция не изменяется,
просто указываются иные размеры в теге <img>...

100х100 -> 110х100 длинна на 10% больше, пропорция имиджа при ресайзе поползет, по этому нужно из оригинала вырезать 1 x 0.9 и ресайзить уже этот crop-имидж.
 
Alexandre
Какие еще размеры в теге img? Давно таким образом отресайзенные картинки в чем-нибудь кроме Оперы смотрели?

p.s. Само собой, что ресайзить надо оригиналы, а не тумбнайлики "предыдущего поколения".
 
Какие еще размеры в теге img? Давно таким образом отресайзенные картинки в чем-нибудь кроме Оперы смотрели
извини, я давно версткой не занимался, а что уже отменили аттрибуты:
height - Высота изображения.
width - Ширина изображения.
 
Я в таких случаях делаю так. В шаблоне пишу тип такого Урала <img href-/img/image.php?url=/image.jpg&w=100&h=100> после чего, либо генерится новая картинка если подобная не создана либо редиректится на созданную. Работает с замедлнием первый раз, но зато потам отдается достаточно быстро.
 
Alexandre
И как будет выглядеть картинка оригинального размера AxB, у которой стоят width и height X и Y, не равные A и B соответственно?

Лично я думаю, что она будет выглядеть прескверно, т.к. большинство браузеров гладко ресайзить картинки не научилась еще.
 
Автор оригинала: akxxiv
Я в таких случаях делаю так. В шаблоне пишу тип такого Урала <img href-/img/image.php?url=/image.jpg&w=100&h=100>
Делаю аналогично, хотя честно когда на странице штук 10 картинок надо сильно ужать, то подтормаживает.
Оптимальный вариант - написать скрипт, который сам сгенерит превьюшки при заливке на сайт, А при смене дизайна их просто сгенерировать заново из большой, которая ведб останется на сервере.
 
при загрузке генерировать превьюшку 800х800.
при отображении ресайзить её до нужного размера и класть в кэш.
не забыть прописать реврайты, чтобы каждый раз не дёргать пхп.
 
Сверху