博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 清除图片背景颜色 使之透明
阅读量:2230 次
发布时间:2019-05-09

本文共 1105 字,大约阅读时间需要 3 分钟。

主要JS

/**清除图片背景颜色 **/function removeImgBg(img) {    //背景颜色  白色    const rgba = [255, 255, 255, 255];    // 容差大小    const tolerance = 60;    var imgData = null;    const [r0, g0, b0, a0] = rgba;    var r, g, b, a;    const canvas = document.createElement('canvas');    const context = canvas.getContext('2d');    const w = img.width;    const h = img.height;    canvas.width = w;    canvas.height = h;    context.drawImage(img, 0, 0);    imgData = context.getImageData(0, 0, w, h);    for (let i = 0; i < imgData.data.length; i += 4) {        r = imgData.data[i];        g = imgData.data[i + 1];        b = imgData.data[i + 2];        a = imgData.data[i + 3];        const t = Math.sqrt((r - r0) ** 2 + (g - g0) ** 2 + (b - b0) ** 2 + (a - a0) ** 2);        if (t <= tolerance) {            imgData.data[i] = 0;            imgData.data[i + 1] = 0;            imgData.data[i + 2] = 0;            imgData.data[i + 3] = 0;        }    }    context.putImageData(imgData, 0, 0);    const newBase64 = canvas.toDataURL('image/png');    img.src = newBase64;}

测试示例:

	 new document 	

清除前: 

清除后: 

转载地址:http://gskbb.baihongyu.com/

你可能感兴趣的文章
关于三元运算符的类型转换问题
查看>>
笔记本怎么设置WIfi热点
查看>>
如何实现字符串的反转及替换?
查看>>
Java面试题全集(上)
查看>>
Java面试题全集(中)
查看>>
值传递和引用传递
查看>>
什么情况下用+运算符进行字符串连接比调用StringBuilder对象的append方法连接字符串性能更好?
查看>>
怎么根据Comparable方法中的compareTo方法的返回值的正负 判断升序 还是 降序?
查看>>
理解事务的4种隔离级别
查看>>
常用正则匹配符号
查看>>
建议42: 让工具类不可实例化
查看>>
Java 异步机制与同步机制的区别
查看>>
hibernate的对象三种状态说明
查看>>
什么是N+1查询?
查看>>
Spring 接管 Hibernate 配置 延迟加载
查看>>
找出不在预定数组中的自然数
查看>>
String常见面试题
查看>>
直插,快排,堆排,归并排序的分析
查看>>
二叉树的各种操作(面试必备)
查看>>
oracle
查看>>