html代码
- css 超出文字省略
- js判断json为空
- JavaScript反转数组实用的4种方法
- JS检查数组中是否存在某个元素
- js反转数组
- img图片和a标签在同一行的css写法
- js正则校验是否字符串为纯中文
- js数组遍历、截取、删除、元素查询
- view、div水平横向排列
- js document 增加、删除、操作节点和子节点
- js判断JSON为空
- input数字类型去掉上下箭头
- css鼠标指针cursor
- js两个时间相减得出时分秒
- Math.random()随机数四舍五入
- 使用js去除字符串内所带有空格的三种方法
- var、let与const变量声明比较
- js字符串切割split
- append和appendChild比较
- js给button添加点击事件
- 原生AJAX、XMLHttpRequest发送post表单请求
- js给input框点击回车事件
- css伪类选择器
- document移除style一个样式属性
- html2canvas如何实现滤镜效果
html2canvas如何实现滤镜效果
时间:2024-01-01
html2canvas是一款截图js插件,可以很方便的对某些区域进行截图。但是有一个缺陷,那就是不支持滤镜图片filter效果(还包括其他一些CSS3效果),这是当前插件的一个小缺点。
一、解决
目前的一个解决方案是利用canvas来先实现滤镜效果,然后重新渲染。整体思路是将设置过滤镜的图片进行canvas重新画图,然后再通过html2canvas截图,分为2步;
html2canvas插件截图还是挺好用的,不考虑更换的话,可以通过这个折中的办法达到效果
setNewImg(element){ let img = new Image(); img.src = element.src; img.onload = () => { let width = img.width; let height = img.height; const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); canvas.width = width; canvas.height = height; if (element.filterBlur) {//标记,判断是进行哪种滤镜,当前只判断了模糊和灰色滤镜,可以增加其他滤镜 ctx.filter = "blur(" + element.filterBlur + "px)";//模糊滤镜 } else { ctx.filter = "grayscale(" + element.grayscale + "%)";//灰色滤镜 } ctx.drawImage(img, 0, 0, width, height); element.filertsrc= canvas.toDataURL();//将生成的滤镜图片返回,必要时候使用 } }; |