栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用js怎么实现图片马赛克效果?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用js怎么实现图片马赛克效果?

// 使用canvas获取ImageData,然后遍历修改像素数据实现class Main {    init() {        var cvs = document.getElementById("canvas");        var ctx = cvs.getContext("2d");        var _img = new Image();        _img.src = "./img/loginbg.jpg";        _img.onload = () => { ctx.drawImage(_img, 0, 0); let _db = ctx.getImageData(0, 0, cvs.width, cvs.height); ctx.clearRect(0,0,640, 1136); ctx.putImageData(this.toPixelate(_db, ctx, 5), 0, 0);        }    }    toPixelate(imgDb, ctx, lv) {        if (!lv) { lv = 3;        }        let rsl = ctx.createImageData(imgDb.width, imgDb.height);        let _db1 = [];        for(let i=0;i<imgDb.data.length;i+=4) { _db1.push([     imgDb.data[i], imgDb.data[i+1], imgDb.data[i+2], imgDb.data[i+3] ])        }        for (let i=0;i<imgDb.width;i++) { for (let j=0;j<imgDb.height;j++) {     let fi = i-(i%lv);     let fj = j-(j%lv);     _db1[j*imgDb.width+i] = [..._db1[fj*imgDb.width+fi]]; }        }        _db1.forEach((v, i) => { const k = i*4; rsl.data[k] = v[0]; rsl.data[k+1] = v[1]; rsl.data[k+2] = v[2]; rsl.data[k+3] = v[3];        })        return rsl;    }}var main;window.onload = function () {    main = new Main();    main.init();}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/386257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号