На сервере обрабатывать картинки с наложением и трансформациями + API

10 000 руб. за проект • безналичный расчёт, электронные деньги
23 мая 2019, 16:04 • 5 откликов • 56 просмотров
Ели вы уже работали на сервере py/ruby с картинками и оверлеями в CLI, понимаете как сделать простое API с авторизацией запросов по ключу – то вам стоит прочесть ниже.

По простому если
  1. на сервере лежат оригиналы картинок, к которым сделаны png маски;
  2. под полученный в API POST запросе подбираются конечные картинки, на которых изображены девайсы которые будут соответствовать по rate=width/height скриншоту;
  3. скриншот трансформируется под каждую подходящую по rate картинку, чтобы после наложения он накладывался (натягивался) под размер и пропорции девайса что на картинке (в точку по top left corner замаппленную);
  4. трансформированный (растянутый в проекции) скриншот обрезается с алиазингом той самой маской под каждую картинку;
  5. склеивается с конечными картинками
  6. все сохраняется на диск и передается в json.data массиве в ответе к API

- - -
Нужно сделать API метод чтобы оно могло делать в точности (конечный результат – картинка) как на сайтах:
https://magicmockups.com/
https://smartmockups.com
http://mockdrop.io/

всяких полно, на сайте alternativeto например найдя конкурентов placeit, но у них нет API, у кого-то есть но оно не работает... У нас редкий кейс, прошелся и нигде из популярных сервисов не нашел API.
Те что выше, три – они просто по простоте визуальной подходят чтобы задачу объяснить.

Что нам надо...

Берем гем который умеет работать с прозрачными изображениями и накладывать одно на другое, типа imagemagick (тут про перспективу).

На сервере лежит по десятку фотографий (на них человек держит телефон в руках или он где-то лежит – т.е. не прямые линии, а есть scew искажение) для iOS и Android, с десяток на каждую платформу.

В настройках к исходной картинке, что на сервере лежат, прописаны настройки требуемых пропорций (чтобы правильный девайс подобрать для исходного скриншота отправляемого пользователем).
Также, для картинки прописаны на сервере настройки для трансформации загружаемого через API изображения.
Соответственно, для каждой картинки на сервере будут настройки для curve, т.е. clipping path, который будет обрезать загружаемое снаружи изображение (например, если там заходит палец на девайс).
Картинку проще всего принять снаружи в виде base64 (как вариант, или мы передадим ссылку из firebase storage).

В ответ сервер отдает массив со ссылками на картинки с уже наложенным изображением.

По ресурсам смотрите, надо максимально не долго это делать.
Файлы