如何给证件照换一个背景颜色

我们在考试报名的时候,经常是不同的考试需要不同的登记照尺寸和背景颜色,但是我们基本上不可能每种颜色的证件照都去拍一张吧,那样也太麻烦成本也太高。所以通过前端实现了一个改变证件照背景颜色的方法。他可以将证件照的背景颜色修改为任意的颜色,而不局限于红白蓝等等基础颜色。并且有几种不同的算法进行选择,而且针对不同的登记照,它提供了不同的背景色识别灵敏度来供用户自行调整,从而达到最好的背景色修改效果。证件照改换背景色https://www.butterpig.top/photochangebackground

该功能是通过纯前端js完成的,通过操控CANVAS画布中的每个像素点来实现更换背景色,因此该方法并没有用到专业的图像处理或者机器学习方法来进行,因为是纯前端处理,引入太复杂的框架反而不利于用户加载访问速度,而且纯前端处理,在绝大部分情况下的效率还是挺高的!

let preCanvas = document.getElementById('canvas')
let ctx = preCanvas.getContext('2d')
preCanvas.width = this.img.width
preCanvas.height = this.img.height
ctx.drawImage(this.img, 0, 0, this.img.width, this.img.height)
let imgData = ctx.getImageData(0, 0, this.img.width, this.img.height);
this.dots = [];
let r = imgData.data[(10 * imgData.width + 10) * 4];
let g = imgData.data[(10 * imgData.width + 10) * 4 + 1];
let b = imgData.data[(10 * imgData.width + 10) * 4 + 2];
let a = imgData.data[(10 * imgData.width + 10) * 4 + 3];

主要是利用了CANVAS的getImageData方法,来获取每个像素点的信息,并且通过该信息来获取每个像素点的R/G/B/A四个色彩通道的数值大小,最终进行比较和替换,再加之一定的优化算法辅助。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值