Веб-версия Vinci 02.08.2016


Недавно вышедшее мобильное приложение для обработки фотографий фильтрами на основе нейронных сетей Vinci понравилось многим, я же решил добавить удобства и сделать онлайн-версию данного сервиса, тем более что API оказался довольно простым. В итоге получился сайт "одной кнопки", позволяющий оценить возможности Vinci.

Я разместил исходный код сайта на Github, и захостил его прямо там же, благодаря функции Github Pages, позволяющей размещать статичные веб-страницы на сервере Github. Адреc сайта: http://vinci.pmmlabs.ru.

Сайт позволяет обрезать прямоугольные изображения перед загрузкой, т.к. сервис Vinci принимает и возвращает только квадратные изображения. Также предусмотрено автоматическое изменение размера, т.к. у Vinci ограничение на максимальный размер фотографии 1440х1080 пикселей.

Единственная трудность, с которой пришлось столкнуться при разработке онлайн-версии Vinci - это кросс-доменная политика безопасности. Сервер Vinci не поддерживает CORS, поэтому пришлось воспользоваться CORS-proxy, это такой промежуточный сервер, который добавляет к ответу заголовок Access-Control-Allow-Origin, чтобы можно было взаимодейтсвовать с сервисом с любого домена. Мой выбор пал на известный open-source проект crossorigin.me, однако использовать конкретно этот сервер оказалось нельзя из-за того, что он не поддерживает POST запросы. Поэтому я форкнул репозиторий и добавил эту функцию сам. Своё изменение я предложил автору оригинального проекта, но не думаю, что он вольёт его к себе, так как на главной странице своего сайта он пишет, что считает POST запросы дырой в безопаснсти. Для моего же случая никакой дыры быть не может, потому что не передаются никакие секретные данные (если, конечно, вы не считаете таковыми свои фоточки). Свою измененную версию crossorigin.me я запустил в облаке Red Hat, и адрес получившегося прокси вы можете увидеть на первой строке файла script.js - при желании вы можете изменить его, прописав любой другой адрес CORS-proxy (которому вы доверяете, например).

Исходники на Github



Теги: Поделки, JS, Vinci