使用PHP或HTML5进行图像弯曲

使用PHP或HTML5进行图像弯曲,php,javascript,html,html5-canvas,gdlib,Php,Javascript,Html,Html5 Canvas,Gdlib,我希望实现: 我已经试过了在会议上提到的答案 根据那里的答案,我尝试了像素级的转换,但没有成功。要理解基于网格的方法,您需要一套我不具备的3d-2d开发人员技能 我是一名PHP开发人员,我正在寻找PHP或HTML5的答案。我尝试过很多方法,从HTML5画布到将图像分割成更小的部分,然后加入它们,但这些方法似乎不起作用 在正确的方向上给予帮助将不胜感激 如果你能用的话,应该很接近 我不知道PHP ImageMagick扩展(与从命令行调用ImageMagick相反)是否也支持此功能,但它可能

我希望实现:

我已经试过了在会议上提到的答案

根据那里的答案,我尝试了像素级的转换,但没有成功。要理解基于网格的方法,您需要一套我不具备的3d-2d开发人员技能

我是一名PHP开发人员,我正在寻找PHP或HTML5的答案。我尝试过很多方法,从HTML5画布到将图像分割成更小的部分,然后加入它们,但这些方法似乎不起作用

在正确的方向上给予帮助将不胜感激

如果你能用的话,应该很接近


我不知道PHP ImageMagick扩展(与从命令行调用ImageMagick相反)是否也支持此功能,但它可能支持。

要实现类似效果,您需要尝试纹理贴图,并且需要一些2d-3d细分和数学技能。其基本思想是将纹理细分为三角形,并使用变换矩阵将其映射到二维坐标。首先使用矩形,然后使用曲线形式更简单,但我对这一点也不熟悉,所以我真的不知道是否使用纹理贴图来弯曲图像。下面是一个简单纹理贴图的示例:

在上述链接中有以下子功能:

n the following code I assume you have a picture object texture  and 4 corners each of   
which is an object with fields x,y,u,v  where x,y are pixel coordinates on the target      canvas   and u,v  are pixel coordinates on texture:

在我看来,这些信息足以从纹理贴图开始。

一种可能性是使用旋转镜动画,而不是数学特化。换句话说,您可以通过在HTML5画布上按所需帧速率顺序绘制5或6个(或任意多个)帧来实现这种转换

您可以使用画布原生API轻松绘制每个帧。在您的情况下,只需绘制文本,然后绘制一个闭合路径,如:

ctx.beginPath();
ctx.moveTo(...);
ctx.arc(...);
ctx.lineTo(...);
ctx.arc(...);
ctx.lineTo(...);
ctx.closePath();
只需调整每个帧的相应值


这应该很容易

这是一个很难解决的问题,除了您提到的网格变换方法之外,不会有一个简单的解决方案。谢谢Jitamaro。你能给我链接一个从基础开始的教程吗?不,我不能,我没有其他的解决方案。请看我编辑的答案。谢谢佩卡。看起来很近。我会花时间调查这件事,然后再回来。我认为你对OP的要求太过严格了。按照我的理解,他想扭曲位图