Каков наилучший способ сохранения/отображения изображений? (не blob, а txt)

Делаю галерею на сайте. И не знаю, какое лучшее решение для этого. Нужен совет.

На мой взгляд, есть два способа работы с изображениями.

  1. Пользователь загружает изображение. Я сохраняю его на сервере только один раз, только в исходном размере. А потом, когда возникает необходимость вывести это изображение на экран, я масштабирую его до нужного размера, например, как аватарку. Поэтому я сохраняю только ОДНО изображение исходного размера и изменяю его размер до ЛЮБОГО правильного размера ПРЯМО ПЕРЕД отображением.

  2. Пользователь загружает изображение. Я сохраняю его на сервере в оригинальном размере, а также делаю и сохраняю несколько копий (размером с эскиза), например, размером с аватар, erc. Таким образом, если изображение отображается, его размер не изменяется каждый раз, когда оно отображается, а просто делается копия нужного размера.

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

На разных форумах объясняют, как делать галереи, и каждый раз говорят, что копии размером с ноготь тоже делаются и сохраняются. Но похоже, что это не имеет смысла, если дизайн меняется вовремя. Пожалуйста, порекомендуйте. Язык — PHP.


person Green    schedule 27.12.2011    source источник


Ответы (1)


Одно решение, которое придумали другие, представляет собой смесь этих двух. Итак, пользователь загружает фото, а вы сохраняете его в исходном виде на своем сервере. Затем, когда потребуется аватар, вы проверяете, сохранился ли он у вас на диске (например, user12345_50x50.jpg, где 50x50 — ширинаxвысота). Если он существует, покажите это изображение. Если нет, то используйте сервер для изменения размера/обрезки, затем сохраните это изображение на диск и отдайте его пользователю. Это позволит вам запрашивать файл любого размера и обслуживать его по мере необходимости, используя преимущества кэширования тех, которые уже были запрошены [Обратите внимание, что это кеш на стороне сервера, поэтому он применяется для всех пользователей].

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

Одной из реализаций, использующих это решение в PHP, является phpthumb: http://phpthumb.sourceforge.net/

person swatkins    schedule 27.12.2011