1、有个需求,是要生产一个浏览器唯一标识,采用canvas追踪的方式,将canvas画布转为base64,但我测试多台设备,有两台出现重复值。
2、请问大家有没有处理过这个问题?
let canvas = document.createElement('canvas');
let ctx = canvas.getContext("2d");
canvas.height = canvas.height;
// ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.fillText("hello world",22,33);
ctx.moveTo(0,0);
ctx.lineTo(100,60);
ctx.stroke();
let a = canvas.toDataURL();
let b64 = canvas.toDataURL().replace("data:image/png;base64,","");
// 这里的转码有问题,转换后全是乱码,但是我上面的代码,并没有中文
let bin = window.atob(b64);
// 最后我将bin用MD5转成了32位,需要引入插件,不写了
// 我怀疑是atob乱码导致最后有重复
建议你先设置字体相关的属性,然后再filltext。