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

Тсарь

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

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

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

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

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

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

Как лучше решить эту проблему? Как у вас реализовано создание thumbnails?
 

Bitterman

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

что делать если при смене дизайна все картинки 100х100 нужно будет изображать как 110х100? Пересчитывать все превью заново?
Что имеется в виду под "сменой дизайна". Если это именно смена дизайна, да еще настолько глобальная, то естественно надо пересчитать все превью заново, а как иначе-то?..
 

kvf77

Red Devil
если все глобавльно - то генери превью тока тогда, когда его запрашивают - или по крону. Лучше по запросу.
 

vonica

Новичок
Лучше создавать превью во время первого обращения, или сразу после загрузки
 

Bitterman

Новичок
kvf77
если все глобавльно - то генери превью тока тогда, когда его запрашивают - или по крону. Лучше по запросу.
Если проблема в том, что превьюшки генерятся долго, то какая разница делать это сразу после загрузки или при запросе? И в том, и в другом случае загрузка страницы откладывается на время необходимое для генерации и возможен обрыв соединения. Или я чего-то непонимаю?
 

Alexandre

PHPПенсионер
что делать если при смене дизайна все картинки 100х100 нужно будет изображать как 110х100? Пересчитывать все превью заново?
а изображение не поползет? 100х100 -> 110х100
по какому алгоритму создаются превью?
 

Angerslave

Новичок
Думаю, лучше 1 или 3 вариант. Ждать пока превьюшка сгенерится обычному пользователю не стоит. А вот админу или крону пофигу, они могут и подождать:))
 

kruglov

Новичок
Angerslave
Ну, не так уж и долго обычному пользователю ждать, если он успел раньше проверяющего результаты изменения админа. Хоть полное время перегенерации всех картинок может быть значительным, пользователю они будут грузиться по очереди (не оставляя его перед пустой страницей "без ничего" надолго). И не все сразу, а только те, которые присутствуют на запрошенной странице. Лично я у себя генерю превьюшки по запросу пользователя (т.е. 2).
 

StUV

Rotaredom
Непосредственно после закачки картинок на сервер создавать превьюхи картинки для всех возможных страниц
Пересчитывать все превью заново
-~{}~ 20.03.08 21:01:

зы:
при смене дизайна
от поступления инфы "о смене дизайна" до внедрения нового дизайна, надеюсь, проходит больше времени, чем время на пере-ресайза всех картинок ?..
 

Alexandre

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

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

kruglov

Новичок
Alexandre
Какие еще размеры в теге img? Давно таким образом отресайзенные картинки в чем-нибудь кроме Оперы смотрели?

p.s. Само собой, что ресайзить надо оригиналы, а не тумбнайлики "предыдущего поколения".
 

Alexandre

PHPПенсионер
Какие еще размеры в теге img? Давно таким образом отресайзенные картинки в чем-нибудь кроме Оперы смотрели
извини, я давно версткой не занимался, а что уже отменили аттрибуты:
height - Высота изображения.
width - Ширина изображения.
 

akxxiv

Новичок
Я в таких случаях делаю так. В шаблоне пишу тип такого Урала <img href-/img/image.php?url=/image.jpg&w=100&h=100> после чего, либо генерится новая картинка если подобная не создана либо редиректится на созданную. Работает с замедлнием первый раз, но зато потам отдается достаточно быстро.
 

kruglov

Новичок
Alexandre
И как будет выглядеть картинка оригинального размера AxB, у которой стоят width и height X и Y, не равные A и B соответственно?

Лично я думаю, что она будет выглядеть прескверно, т.к. большинство браузеров гладко ресайзить картинки не научилась еще.
 

Alon[er]

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

джамшут

Новичок
при загрузке генерировать превьюшку 800х800.
при отображении ресайзить её до нужного размера и класть в кэш.
не забыть прописать реврайты, чтобы каждый раз не дёргать пхп.
 
Сверху