Вопрос

Я создаю социальную сеть, где пользователи загружают свой профиль.

Это изображение будет использоваться на странице профиля в размере 150/150 px.

на главной странице I.E Подача активности пользователя Мне нужно одинаковое изображение, чтобы быть в 75/75 px.

Какая была бы лучшая практика, чтобы сделать это

  1. Изменение изображения изображения на лету (Timthumb).
  2. Изменение размера и сохранения изображения на сервере.
Это было полезно?

Решение

При загрузке фотографий Создать необходимый набор миниатюр и сохранить как [Image_name] Thumb [SIZE_NAME] .jpg или SO:

uploaded: file.jpg
medium: file_thumb_150x150.jpg
small: file_thumb_75x75.jpg
.

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

Другие советы

Я работаю над этой проблемой на некоторое время и наступил 3 основных способа сделать это:

  1. генерировать изображения миниатюр в точке загрузки в качестве фонового процесса.
  2. генерировать изображения по требованию через главное приложение
  3. генерировать изображения по требованию, используя URL как API

    Каждый подход имеет свои плюсы и минусы.

    1. Этот подход - это самый ограничительный, вы должны знать все возможности использования и размеры миниатюр, так что вы можете сгенерировать их сразу после загрузки. Основным преимуществом является то, что изображения могут быть эффективно с использованием сервера, такого как NGINX, как и любые другие статические ресурсы. У Django есть библиотека под названием Sorl-миниатюра, которая обеспечивает тег шаблона для генерации миниатюр всех видов, как и когда они необходимы. Он использует быстрый магазин Key / Value для отслеживания того, какие миниатюры были сгенерированы, и автоматически недействителенники сгенерированные изображения автоматически, если он обнаруживает исходное изображение было изменено. Затем тег шаблона возвращает URL для сгенерированного изображения, который можно подавать непосредственно из Nginx, не проходя через скриптуальный слой. Более гибкий, чем 1, но вы не можете (например) генерировать URL-адрес изображения с помощью JavaScript и ожидаю, что он будет существовать, он должен быть выполнен на BackeND-код веб-сайта или шаблонами.
    2. Полностью динамичный и гибкий, вы можете получить любую версию изображения, которое вы хотите, просто настраивая URL, Amazon использует этот метод, как и все эти веб-сайты генерации изображений для заполнения. Можно генерировать URL в JavaScript и делать любые модные вещи, которые вы хотите. Сам сайт не нуждается в знании миниатюрного слоя, возможно, несколько помощников для создания URL-адресов для вас. Но это, очевидно, является наиболее ресурсоемким способом делать вещи, и вам нужно убедиться, что ваша архитектура может обрабатывать нагрузку. Вам необходимо использовать каждый трюк в книге, чтобы своевременно аннулировал кэши, избегать ненужных ударов на сценарии изменений и т. Д.

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

Я говорю вам, что я делаю.Я всегда хранят изображение полного размера, но переименовав его в USSING ID БД с ведущими нулями.При первом использовании я создаю миниатюру и хранить его в другой папке, используя его в следующих вызовах.

Если пространство для сервера и пропускной способности - это проблема, вы должны рассмотреть возможность использования CDN.

Amazon имеет a Хороший сервис,

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top