Обычно подобные операции с картинками делаются на сервере с помощью ImageMagick и т.д., это лучший вариант.
А реализовать такое целиком на фронтенде можно попробовать с помощью API внешних сервисов обработки изображений:
www.blitline.com/docs/quickstart
https://cloudinary.com
https://www.imgix.com/
У всех есть бесплатные тарифные планы для разработчиков.