canvas追踪 base64转码问题

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乱码导致最后有重复

clipboard.png

阅读 1.8k
1 个回答

建议你先设置字体相关的属性,然后再filltext。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题