Каков наилучший способ реализации структуры каталогов и файлов для администрирования нескольких изображений от пользователей? - PullRequest
0 голосов
/ 02 августа 2011

Итак, вот как мы планируем делать это на PHP, но мы не знаем, целесообразно ли это. Если нет, пожалуйста, объясните лучшую альтернативу.

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

Итак, вот как мы планируем хранить фотографии пользователей:

Допустим, мы храним изображение в разрешениях шириной 640 пикселей и 320 пикселей, пользователь - пользователь 1, и у них есть один рис. Мы будем хранить его в:

.../1/640/1.jpg
.../1/320/1.jpg

Первая фотография пользователя 2 будет сохранена в:

.../2/640/1.jpg
.../2/320/1.jpg

Таким образом, если бы нам потребовалось изображение размером 640 пикселей для пользователя 2, мы бы получили .../2/640/1.jpg, а если нам нужно изображение размером 320 пикселей для пользователя 1, мы просто получили бы .../1/320/1.jpg.

Затем мы просто сохраним дополнительные фотографии в цифровом виде, поэтому, если пользователь 1 загрузит новую фотографию, она будет сохранена в:

.../1/640/2.jpg
.../1/320/2.jpg

Их PIC ПО УМОЛЧАНИЮ, отображаемая в их профиле, ВСЕГДА будет 1.jpg, поэтому, если они решат сделать 2-е изображение своим изображением по умолчанию, мы просто переименуем все 2.jpg в 1.jpg и все 1.jpg до 2.jpg. Имеет ли это смысл?

Таким образом, мы всегда можем легко вызвать их рисунок по умолчанию, просто извлекая 1.jpg из любого каталога разрешения, который нам нужен для отображения.

По мере добавления дополнительных изображений мы просто увеличиваем их имя по числовому значению (3.jpg, 4.jpg и т. Д.) И делаем соответствующие копии в подкаталогах каждого разрешения (... / 640 / и ... / 320). / например).

Порядок изображений будет просто их числовым порядком и будет отображаться как таковой, и если пользователь захочет изменить порядок изображений, мы просто переименуем файлы соответствующим образом в каталоге КАЖДОГО разрешения. Да, во время каждого изменения требуется много работы, но до следующего изменения больше не требуется.

Что нам нравится в этом методе, так это то, что нам вообще не нужно вызывать базу данных, поскольку все пользователи будут иметь одинаковую структуру в зависимости от их идентификатора пользователя.

Я надеюсь, что все имеет смысл!

Это хороший метод для хранения фотографий нескольких пользователей? Если нет, то почему?

Есть ли лучший метод? Если да, не могли бы вы, пожалуйста, описать это?

Спасибо!

1 Ответ

0 голосов
/ 02 августа 2011

Вот как я это сделал в нескольких ситуациях:

  • Хранить необработанное изображение где-нибудь
  • Создать image-src, например: src="1234_640x320.png" или src="image.php?id=... (можеттакже при необходимости добавьте идентификатор пользователя)
  • Направьте это (mod_rewrite, необходимо только в том случае, если вы не используете файл php напрямую) в файл php, который проверит фактическое существование измененного изображения(анализ исходного пути или использование get-переменных).
  • , если размер изображения еще не изменен, измените размер и сохраните его
  • перенаправьте (303) в новый файл (в следующий разразмер изображения будет изменен, поэтому весь расчет выполняется только один раз)

Обновление :

для уточнения:

Идея состоит в том, чтобыиспользуйте запрос, путь или переменные, которые каким-то образом должны включать всю необходимую информацию об изменении размера, для генерации окончательного пути хранения.Затем путь проверяется на фактическое изображение.Если нет, изображение с измененным размером будет сохранено в этом месте.Реализованный правильно, пересчет должен быть выполнен только по одному запросу.

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

...