必须有办法做到这一点。我用html5画布画了一个形状,我想模糊它。据我所知,没有本地方法,所以我假设需要一个js库。问题是大多数图书馆只模糊图像,例如this。这可能吗?html画布形状模糊滤镜
回答
您链接的pixastic库示例实际上应该使用canvas元素作为第一个参数而不是图像。
默认情况下,pixastic库会尝试用您创建的canvas元素替换您传入的节点。为了防止这样做,您可以添加一个选项来指定离开DOM节点,并包含一个回调以自己处理返回的数据。事情是这样的:
Pixastic.process(canvas, "blur", { leaveDOM: true }, function(img) {
canvas.getContext('2d').drawImage(img, 0, 0);
});
另外,如果你不希望依赖于库,可以实现自己使用getImageData()模糊,操纵返回的像素数据,并使用putImageData()来绘制模糊图像回到画布。
另外需要注意的是,单个像素操作速度较慢,可能无法很好地处理大图像。如果这是一个问题,您可以尝试缩小图像并缩小图像,以便快速完成模糊效果。事情是这样的:
ctx.drawImage(canvas, 0, 0, canvas.width/2, canvas.height/2);
ctx.drawImage(canvas, 0, 0, canvas.width/2, canvas.height/2, 0, 0, canvas.width, canvas.height);
酷,虽然这工作肯定,它不表现我喜欢的方式。我需要边缘模糊很像高斯模糊行为。我认为这个库使用框模糊方法。有任何想法吗? – 2010-08-12 23:40:33
我不知何故忽略了你的第二种方法。让我给一个镜头。 – 2010-08-12 23:57:10
你会碰巧有一个使用getImageData方法的例子吗? – 2010-08-13 02:45:16
对于一个快速模糊,这几乎是高斯我建议StackBlur: http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html
另外,您可以使用此超快方框模糊与2次迭代: http://www.quasimondo.com/BoxBlurForCanvas/FastBlurDemo.html
你可以使用CSS来模糊画布。如果它只是你想要模糊的形状,那么这个形状将需要位于它自己单独的图层(画布)上,您可以随时创建它。
例子:
canvas.style.webkitFilter = "blur(3px)";
您可以再次与联合国模糊的帆布:
canvas.style.webkitFilter = "blur(0px)";
这可能是最快的(也是最简单)的方式模糊的画布 - 特别是对于移动设备。
https://github.com/nodeca/glur - 通过IIR滤波器实现高斯模糊。查看演示。
- 1. HTML画布,画的模糊多边形
- 2. 模糊画布形状的边框
- 3. 缓解模糊滤镜
- 4. 在HTML画布上绘制平面形状会创建模糊的边框
- 5. 如何修复HTML5画布中的模糊形状边缘?
- 6. HTML5画布:它可以模糊形状和图像
- 7. 如何在Firefox中设置动画模糊滤镜?
- 8. 高斯模糊滤镜逆转:iOS
- 9. iOS的10模糊滤镜CSS
- 10. SVG模糊滤镜边缘假象
- 11. 将模糊滤镜应用于BitmapData
- 12. 模糊滤镜全页导航
- 13. 反转图像模糊滤镜(不模糊蒙版)
- 14. HTML画布 - 间隔后绘制形状
- 15. 模糊画布元素?
- 16. html5图像滤镜与画布
- 17. HTML5画布对比度滤镜
- 18. HTML5画布不能应用sw滤镜
- 19. 画布画越来越模糊
- 20. html5画布形状填充
- 21. HTML5 - 画布形状描边
- 22. 帆布形状动画
- 23. HTML画布:圆形形状(行星)的内部阴影
- 24. JSFL:将模糊滤镜添加到符号但更改模糊量
- 25. 镜像Box2D形状
- 26. 在模态中更改模糊滤镜TitleWindows
- 27. 使用模糊滤镜的OpenCV边框模式问题
- 28. 形状不画在画布上
- 29. 画成画布形状的图像
- 30. 画布单线与笔画形状
试试这个:http://www.pixastic.com/lib/docs/actions/blurfast/ – 2014-07-08 03:35:09