javascript - 如何使用 html5 canvas 扭曲图像以创建在风中飘扬的旗帜效果

标签 javascript css html animation canvas

给定一张图片,我需要使用 javascript 和 html5 canvas 创建一个图像被扭曲的动画,就好像它是一面在风中飘扬的旗帜。

奖励:我还希望能够将此动画导出为 png。

最佳答案

我创建了一个 simple example的旗帜在风中飘扬。这很丑陋,因为我绘制了旗帜来填充 Canvas (而不是为旗帜留下填充)并且因为我没有尝试抗锯齿。 我也没有尝试提供 3D 阴影,这对效果有帮助。

我可以在我机器上的 Chrome v8 中使用 320 像素宽的标志获得 64fps。如果您想自己测试速度,请将第 59 行的 fps 更改为 1000 并取消注释第 63 和 82 行;然后它会每 100 帧向控制台输出 fps 信息。

即使使用 ExCanvas,这在 IE8 中也不起作用。 ,因为那里没有访问单个像素数据的机制。

编辑:为了好玩,我更新了示例以在波纹穿过图像时对它们进行阴影处理。

Edit2:为了更有趣,我在旗帜绘图中添加了填充(不再剪裁),并添加了一个“挤压”因子,使您可以使旗帜的右侧大于或小于原件(用于透视)。因为它会稍微降低性能,所以我将其上传为 a separate sample .

US Flag waving in the wind (static screenshot)

关于javascript - 如何使用 html5 canvas 扭曲图像以创建在风中飘扬的旗帜效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362248/

相关文章:

html - 为什么我在使用几乎相同的代码构建的两个 HTML 页面中围绕标题区域移动

jquery - 对象 #<HTMLDivElement> 没有方法 'css'

html - Azure AD B2C 自定义策略社交按钮顺序

javascript - 如何将鸟类计数数据放入 d3.js 以在谷歌地图上绘制条形图

javascript - 使用javascript嵌入动态大小的网页

javascript - 使用 Javascript 隐藏 Android WebView 中的元素

css - 如何让图像尊重它们的 div 边界?

php - 谷歌搜索栏 twitter-bootstrap

座位图插件上的 Javascript 和 jQuery 冲突

javascript - 针对特定的 div 更新图像