Делаем фотосервис для загрузки и отдачи изображений. Основные задачи:
- Загрузка изображений
- Сохранение файлов в облако
- Раздача изображений с учетом фильтров
Загрузка изображений
Изображения будут прилетать от клиентов двумя способами: в виде внешней ссылки на картинку или в виде файла. В первом случае дополнительно осуществляется скачивание исходного файла. После скачивания файлу присваивается уникальный идентификатор и оригинал изображения загружается в облако.
В качестве облака используем Amazon S3. Документацию и гайды по загрузке можно найти в интернете. Например вот (v2) или вот.
Раздача изображений
При обращении на наш сервис за изображением по адресу вида https://images.codex.so/9c6f59c3-abe9-4ff5-962d-f0580aca77ce/ получаем идентификатор изображения, скачиваем файл из облака, применяем фильтры, кешируем и отдаем.
Фильтры
Запрашивать картинки можно с фильтрами crop и resize, которые дописываются к адресу изображения (или в виде GET параметров). Формат фильтров можно придумать свой, например такой:
https://images.codex.so/9c6f59c3-abe9-4ff5-962d-f0580aca77ce/crop300x300/
https://images.codex.so/9c6f59c3-abe9-4ff5-962d-f0580aca77ce/resize1200x700/
Все операции над изображениями делаем на нашей стороне. Amazon S3 в данном сервисе должен выступать исключительно в роли облака, которое в теории может быть безболезненно заменено на любое другое.
Кропаем и ресайзим по самым простым схемам: если указана одна сторона, то подгоняем по ней, сохраняем пропорции, и тд.
Стек технологий
Пишем на PHP, можно использовать Amazon SDK. ПО для кеширования или базы данных (если потребуется) — на ваше усмотрение.