Вам необходимо реализовать приложение «Фотобудка», которое позволяет сделать селфи прямо в браузере, сохранить понравившиеся снимки себе на компьютер или опубликовать в фотопоток:
- Проверяем доступность необходимых API. Если их нет, показываем ошибку.
- Запрашиваем доступ к веб-камере. Если доступ не предоставлен, показываем ошибку.
- Отображаем видео с веб-камеры.
- При клике на кнопке «Сделать снимок» помещаем текущий кадр видео на холст.
- Получаем изображение с холста и отображаем его в списке готовых фотографий.
- При клике на кнопке «Загрузить» отправляем выбранное фото на сервер.
- При клике на кнопке «Скачать» сохраняем выбранное фото на диске.
- При клике на кнопке «Удалить» удаляем фото из списка.
Интерфейс приложения состоит из двух ключевых компонентов:
.app
— съемка фото;.list
— список фотографий.
#error-message
— поле для вывода сообщений об ошибках;#take-photo
— кнопка создания снимка.
Потребуется отобразить видео с веб-камеры, чтобы пользователь мог видеть себя в момент съемки.
При создании снимка должен проигрываться файл ./audio/click.mp3
, имитирующий щелчок затвора фотоаппарата.
Недостающие элементы необходимо создать скриптом при инициализации приложения.
Карточка фотографии в списке имеет следующий HTML-код:
<figure>
<img src="path/to/pic.png">
<figcaption>
<a href="path/to/pic.png" download="snapshot.png">
<i class="material-icons">file_download</i>
</a>
<a><i class="material-icons">file_upload</i></a>
<a><i class="material-icons">delete</i></a>
</figcaption>
</figure>
Новые фотографии добавляются в начало списка. При клике на ссылки должны выполняться следующие действия, по порядку:
- скачивание изображения (достигается за счет атрибутов
download
иhref
); - загрузка изображения на сервер (смотрите раздел «Данные»);
- удаление изображения из списка.
После скачивания и загрузки изображения соответствующие им кнопки отображаться не должны.
Для отправки фотографии в фотопоток необходимо отправить POST-запрос на адрес:
https://neto-api.herokuapp.com/photo-booth
Запрос должен быть сформирован как multipart/form-data
, а изображение — отправлено полем image
. В ответ в случае успеха придет публичный URL-адрес изображения. При этом изображение появится в фотопотоке.
Функция удаления будет удалять фотографии из списка. Средств удаления фотографии из фотопотока нет.
Вероятно, у некоторых из вас не окажется веб-камеры или браузера, в котором работает navigator.getUserMedia
. Что же делать, если вы один из таких «счастливчиков»?
А что бы вы делали в том случае, если бы это была реальная задача из реального проекта? Возможны всего три варианта:
- Не браться за задачу.
- Решать задачу вслепую.
- Получить доступ к веб-камере и нормальному браузеру на время тестирования.
Эти же три варианта доступны вам и сейчас. Естественно, если вы не беретесь за эту задачу, то зачет по всему заданию получить не удастся. Вероятность решить вслепую тоже крайне низка.
При реализации нельзя изменять HTML-код и CSS-стили.
Реализацию необходимо поместить в файл ./js/script.js
. Файл уже подключен к документу, поэтому другие файлы изменять не требуется.
Реализуйте функционал во вкладке JS.
В онлайн-песочнице на CODEPEN.
Потребуется только ваш браузер.
- Открыть код в песочнице.
- Нажать кнопку «Fork».
- Выполнить задание.
- Нажать кнопку «Save».
- Скопировать адрес страницы, открытой в браузере.
- Прислать скопированную ссылку через личный кабинет на сайте netology.ru.
Потребуются: браузер, редактор кода, система контроля версий git, установленная локально, и аккаунт на GitHub или BitBucket.
- Клонировать репозиторий с домашними заданиями
git clone https://github.com/netology-code/hj-homeworks.git
. - Перейти в папку задания
cd hj-homeworks/media/photo-booth
. - Выполнить задание.
- Создать репозиторий на GitHub или BitBucket.
- Добавить репозиторий в проект
git remote add homeworks %repo-url%
, где%repo-url%
— адрес созданного репозитория. - Опубликовать код в репозиторий
homeworks
с помощью командыgit push -u homeworks master
. - Прислать ссылку на репозиторий через личный кабинет на сайте netology.ru.