主题
LimeBlur 图片高斯模糊组件
一个功能强大的图片高斯模糊处理组件,支持多种模糊方式和参数调整。可用于实现背景虚化、内容模糊、毛玻璃效果等多种视觉效果。组件提供了API调用和组件调用两种使用方式,适用于不同的应用场景。
文档链接
📚 组件详细文档请访问以下站点:
安装方法
代码演示
离屏API方式
在支持离屏canvas的环境通过API的方式调用,适用于APP、WEB、微信小程序、抖音小程序、支付宝小程序等平台。
js
import { gaussianBlur, GaussianBlurOptions } from '@/uni_modules/lime-blur'
gaussianBlur({
src: 'https://img11.360buyimg.com/seckillcms/s280x280_jfs/t1/129831/4/33281/106962/63c63065F0d8fa250/da5d88be0508fb55.jpg',
radius: 5,
success(url) {
console.log('处理后的图片', url)
}
} as GaussianBlurOptions)
非离屏API方式
在非离屏canvas的环境支持通过API可传入canvasId,需要先在页面中创建canvas元素。
html
<canvas id="canvas" canvas-id="canvas" type="2d" :style="{ width: canvasWidth + 'px', height: canvasHeight + 'px'}"></canvas>
js
import { gaussianBlur, GaussianBlurOptions } from '@/uni_modules/lime-blur'
const canvasWidth = ref(300)
const canvasHeight = ref(300)
gaussianBlur({
canvasId: 'canvas',
component: getCurrentInstance().proxy, // 或this
src: 'https://img11.360buyimg.com/seckillcms/s280x280_jfs/t1/129831/4/33281/106962/63c63065F0d8fa250/da5d88be0508fb55.jpg',
radius: 5,
onSize(width, height) {
// 监听图片的尺寸,设置canvas尺寸
canvasWidth.value = width
canvasHeight.value = height
},
success(url) {
console.log('处理后的图片', url)
}
} as GaussianBlurOptions)
组件方式
直接使用组件进行图片模糊处理,可以通过滑块动态调整模糊程度。
html
<image class="image" :src="path" v-if="path" mode="widthFix"></image>
<slider :value="radius" @change="sliderChange" :step="5" :max="100" :min="0" />
<l-blur :radius="radius" gaussian @success="success" :src="src"></l-blur>
js
const src = '/static/mv2.jpg';
const path = ref('')
const radius = ref(10)
const success = (url) => {
console.log('url', url)
path.value = url
}
const sliderChange = (e) => {
radius.value = e.detail.value
}
快速预览
导入插件后,可以直接使用以下标签查看演示效果:
html
<!-- 代码位于 uni_modules/lime-blur/components/lime-blur -->
<lime-blur />
插件标签说明
标签名 | 说明 |
---|---|
l-blur | 组件标签 |
lime-blur | 演示标签 |
Vue2使用说明
main.js中添加以下代码:
js
// vue2项目中使用
import Vue from 'vue'
import VueCompositionAPI from '@vue/composition-api'
Vue.use(VueCompositionAPI)
详细配置请参考官方文档:Vue Composition API
API文档
Props 属性说明
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
src | 图片地址,支持网络和本地路径 | string | - |
radius | 模糊半径,值越大越模糊 | number | 0 |
gaussian | 是否使用高斯模糊,false为堆栈模糊,只对非离屏canvas生效 | boolean | true |
Events 事件
事件名 | 说明 | 回调参数 |
---|---|---|
success | 模糊处理成功时触发 | url: string |
fail | 模糊处理失败时触发 | error: any |
GaussianBlurOptions 选项
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
src | 图片地址,网络或本地 | string | - |
radius | 模糊半径,越大越糊 | number | 0 |
gaussian | 是否使用高斯模糊,false为堆栈模糊,只对非离屏canvas生效 | boolean | true |
canvasId | canvas 元素的 id 属性 | string | - |
component | 组件或页面实例,限定在什么范围内查找id | object | - |
success | 处理成功后的回调函数 | (url: string) => void | - |
fail | 处理失败后的回调函数 | (error: any) => void | - |
onSize | 图片加载后获取尺寸的回调函数 | (width: number, height: number) => void | - |
常见问题
- 在App端使用需要自定义基座
- 确保图片资源可以正常访问,网络图片需要确保没有跨域限制
- 模糊半径过大可能会影响性能,建议根据实际需求适当调整
- 非离屏canvas方式需要手动设置canvas尺寸
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
支付宝赞助 | 微信赞助 |
---|---|
![]() | ![]() |