Xpoint
   [напомнить пароль]

оптимальные алгоритмы создания превьюшек

Метки: [без меток]
2005-11-02 18:22:07 [обр] Rumata(0/3)[досье]

создавая некоторые фотогаллереи, само собой разумеющимся предполагается создание превьюшек.
встает вопрос - какой самый правильный способ (возможно, но не факт, правильный == эстетичный)?

в качестве образца рассмотрим превью размера 200х200

  1. пропорциональное уменьшение размеров оригинала в определенному размеру, чтобы изображение вписалось в квадрат, указанных размеров
  2. создание квадратного превью (указанного размера) из части изображения (например, центральной)
  3. создание квадратного превью из квадратной части цельного изображения и последующее приведение к размеру превью
спустя 13 минут [обр] melfar(0/-1)[досье]
Смотря какая фотогалерея. Если имеется в виду общественная, куда каждый может отправить фотку, то стоит вписывать в квадрат (до достижения обеих размерностей) с обрезкой либо по ширине, либо по высоте, в случае если картинка не соответствует формату. Если ужимать только по ширине, то станет возможной закачка очень высоких картинок, портящих дизайн, то же самое по высоте. Если вписывать без обрезки до достижения одной из размерностей, может получиться совсем маленькая превьюшка.
Если же имеется в виду фотогалерея, управляемая администратором, то тут зависит от его пожеланий, так как можно быть уверенным, что он не зальет картинку 10000x1. Но при этом не стоит забывать о полезности возможности закачивания превьюшки самим админом (благодаря чему он сможет сам выбрать оптимальный способ — уменьшение или обрезка, или и то и другое).
спустя 15 минут [обр] Rumata(0/3)[досье]
melfar[досье]<[ ужимать только по ширине, то станет возможной закачка очень высоких картинок, портящих дизайн, то же самое по высоте ]>
уточню:
  1. пропорционально ужимать, то есть картинка рамера 900х300 (широкая) вернет превью 200х66, а картинка 300х900 - 66х200, то есть они обе будут вписаны в квадрат 200х200
  2. из оригинала по центру вырезается центральная часть 200х200
  3. находится максимальный квадрат, который можно вписать в границы (для вышеуказанных это центр 300х300) и его ужимаем в квадрат 200х200
спустя 6 минут [обр] Rumata(0/3)[досье]

возможно я не прав,
но публикация изображений должна быть максимально автоматизирована - минимум телодвижений со стороны администратора и пользователя.
пользователю в вариантах 2 и 3 при это том допускается выбирать "удачный" с его точки зрения фрагмент для превью (с умольчательным центральным фрагментом)

p.s. модераторам: подкорректируйте, пожалуйста, мой второй пост с цитатой

спустя 12 минут [обр] melfar(0/-1)[досье]
пользователю в вариантах 2 и 3 при это том допускается выбирать "удачный" с его точки зрения фрагмент для превью (с умольчательным центральным фрагментом)

Боюсь, что это вряд ли поможет. На фотографиях, да и по большому счету на большинстве изображений этот метод не подойдет.
Если задумаваетесь о необходимости такой опции, тогда планируйте сразу же и возможность масштабирования картинки. Хотя на мой взгляд, такие операции (наравне с нормализацией контрастности и т.п.) нужно оставить на совести пользователя.

Рекомендую ознакомиться с похожими проектами.

спустя 47 минут [обр] Давид Мзареулян(6/1003)[досье]

Я у себя реализую 1-й вариант. В принципе, в подавляющем большинстве случаев его хватает, сильновытянутые картинки встречаются очень редко. Но у квадратов есть преимущества: с ними проще работать с программной точки зрения, к тому же квадратные превьюшки более единообразно и симпатично выглядят. С друго стороны, по «пропорциональной» превьюшке можно вполне адекватно оценить и саму картинку, а квадрат всё-таки многое оставляет за кадром (к тому же пользователь не знает, скрывается под квадратной превьюшкой именно квадрат, или панорама 100х1).

Так что надо просто принять политическое решение, и от него плясать. Если решение будет в пользу квадрата, то я бы по умолчанию вырезал центральную часть, но оставлял бы автору возможность потом это скорректировать — т.е. выбрать конкретное место, откуда вырежется квадрат (сторона квадрата всегда равна короткой стороне картинки).

спустя 12 часов [обр] Rumata(0/3)[досье]

Давид Мзареулян[досье]
Не совсем понял, почему проще работать с квадратом "с программной точки зрения".
Сам же я действительно использую именно первый вариант почти из тех же соображений, что и Ваши, а именно:

  1. адекватная оценка оригинала
  2. чуть более простая реализация создания пропорциональной превьюшки

melfar[досье]

Хотя на мой взгляд, такие операции (наравне с нормализацией контрастности и т.п.) нужно оставить на совести пользователя

Вы о чем?
Веб не среда графических разработок

Powered by POEM™ Engine Copyright © 2002-2005