Backend

Делаем фотосервис для загрузки и отдачи изображений. Основные задачи:

  • Загрузка изображений
  • Сохранение файлов в облако
  • Раздача изображений с учетом фильтров

Загрузка изображений

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

В качестве облака используем Amazon S3. Документацию и гайды по загрузке можно найти в интернете. Например вот (v2) или вот.

Раздача изображений

При обращении на наш сервис за изображением по адресу вида https://images.ifmo.su/9c6f59c3-abe9-4ff5-962d-f0580aca77ce/ получаем идентификатор изображения, скачиваем файл из облака, применяем фильтры, кешируем и отдаем.

Фильтры

Запрашивать картинки можно с фильтрами crop и resize, которые дописываются к адресу изображения (или в виде GET параметров). Формат фильтров можно придумать свой, например такой:

https://images.ifmo.su/9c6f59c3-abe9-4ff5-962d-f0580aca77ce/crop300x300/

https://images.ifmo.su/9c6f59c3-abe9-4ff5-962d-f0580aca77ce/resize1200x700/

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

Кропаем и ресайзим по самым простым схемам: если указана одна сторона, то подгоняем по ней, сохраняем пропорции, и тд.

Стек технологий

Пишем на PHP, можно использовать Amazon SDK. ПО для кеширования или базы данных (если потребуется) — на ваше усмотрение.