исказить исходное изображение в другую форму с помощью javascript

Я изучаю технологии веб-приложений и столкнулся с небольшой проблемой. Я создал холст с фоновым изображением и другим изображением поверх этого фона:

// first clear the canvas
main_ctx.clearRect(0,0,canvas.width, canvas.height);
// draw the background image
main_ctx.drawImage(bg_canvas, panoramaX,panoramaY, bg_canvas.width, bg_canvas.width);
// do the transforms
main_ctx.translate(imageX+img_canvas.width/2,imageY+img_canvas.height/2);
main_ctx.rotate(angle);
main_ctx.translate(-(imageX+img_canvas.width/2),-(imageY+img_canvas.height/2));
// draw the img with the transforms applied
main_ctx.drawImage(img_canvas, imageX, imageY);
// reset the transforms
main_ctx.setTransform(1,0,0,1,0,0);

FIDDLE с созданным холстом.

Но я не могу исказить форму img_canvas (изображение сверху). Загруженное изображение, как обычно, представляет собой прямоугольник, и я хочу, чтобы оно было с закругленным нижним краем для примера..
Вот пример того, как оно должно выглядеть в конце:

‹a href=http://oi63.tinypic.com/29maskz.jpg›Здесь‹/a›

Есть ли решение?


person Petr Bečka    schedule 10.02.2016    source источник
comment
Еще раз, неясно, чего вы действительно хотите: вы хотите обрезать изображение в окончательной форме или вы хотите исказить исходное изображение до этой формы? (первое легко, второе нет)   -  person Kaiido    schedule 10.02.2016
comment
Тогда мне очень жаль, я хочу исказить исходное изображение до этой формы.   -  person Petr Bečka    schedule 10.02.2016
comment
Тогда я не буду вашим парнем, но если кто-то сможет этого добиться... проверьте stackoverflow.com/questions/10426887/ и stackoverflow.com/questions/4097688/ для более основных искажений фигур и понять, почему это будет сложно.   -  person Kaiido    schedule 10.02.2016
comment
Тем не менее, спасибо, я надеюсь, что это поможет мне двигаться дальше.   -  person Petr Bečka    schedule 10.02.2016
comment
Просто сделайте это на графическом процессоре, используя webgl, как уже предлагают теги в этом (дублирующемся) вопросе, создайте вершинный буфер для вашего прямоугольника со скругленными углами и визуализируйте его с примененной текстурой. @Kaiido, это займет около 1 мс на графическом процессоре, не загружая процессор вообще.   -  person LJᛃ    schedule 10.02.2016
comment
@LJᛃ А можно ли динамически изменять этот буфер вершин? Пользователь может перетаскивать это изображение, и при его перемещении мой край должен быть более или менее закругленным. Возможно ли этого добиться? Этот вопрос может показаться странным, но у меня нет опыта работы с webGL.   -  person Petr Bečka    schedule 10.02.2016
comment
Конечно, он может быть динамическим, просто ознакомьтесь с некоторыми учебниками по webgl для начинающих, и вы все увидите.   -  person LJᛃ    schedule 10.02.2016
comment
@LJᛃ Большое спасибо, обязательно посмотрю.   -  person Petr Bečka    schedule 10.02.2016