Как вариант просто рисовать загруженную картинку в canvas поверх дизайна:
Ещё можно помещать дизайн в одну канву, загруженную картинку в другую, и попиксельно пересчитывать, суммируя, в зависимости от альфа-канала. Или от маски стакана. Отрисовывать сумму в третью канву – её и показывать. Первые две прятать.
Так можно будет экспортировать готовый фотомонтаж как скачиваемый файл картинки. Всё в браузере, на JS, без бэкенда.
Недавно делал похожее — на картинку с камеры телефона накладывается видео с прозрачностью, можно делать «снимок» и экспортировать-делиться.