用Javascript实现让Canvas变模糊的效果

本文介绍了在Canvas应用中实现模糊效果的三种方法:半透明PNG覆盖、CSS模糊滤镜以及使用StackBlur.js库。推荐使用StackBlur.js,它提供了高效的模糊处理,包括stackBlurImage和stackBlurCanvasRGBA等函数,能在不牺牲性能的情况下实现良好的模糊效果。
摘要由CSDN通过智能技术生成

做Canvas应用的开发,可能会碰到需要使画面模糊的需求。

容易想到三种方式:

1、半透明模糊 PNG 覆盖的方式,这种方式简单易行,但是不能灵活控制模糊程度。

2、CSS方式,比如用-webkit-filter:blur(10px); 的形式,也极其简单,可控制模糊程度,但是这种方式的效果很差很差,中心模糊度高,四周模糊度低,而且整个元素外围会有光晕效果,已经不是真正意义的模糊了。

3、Javascript方式更新画布,最灵活,效果最好,自己写代码就复杂一点,但是已经有现成的js库可以使用了,简单调用函数即可。这个也是本文要推荐的。

这个js库的名称叫做: StackBlur, 目前的版本是0.5

有人可能担心用js处理整个画布会因为大量运算导致效率问题,经我测试,运行demo相当流畅,拖动滑块,画面一点不卡。

这个库提供了3个函数:

stackBlurImage( sourceImageID, targetCanvasID, radius, blurAlphaChannel );    //用于将图片模糊绘制到canvas
stackBlurCanvasRGBA( targetCanvasID, top_x, top_y, width, height, radius );  //用于对Canvas矩形区域执行RGBA模糊
stackBlurCanvasRGB( targetCanvasID, top_x, top_y, width, height, radius );     //用于对Canvas矩形区域执行RGB模糊,不考虑Alpha值

下面是效果图。第一个图是原图,第二个图是模糊半径为32的效果。

DEMO网址  StackBlue Demo (已失效)

作者:Mario Klingemann

算法说明 StackBlur algorithm. (已失效)  网址2 (已失效)

下载源文件: StackBlur v0.5 (已失效)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值