html2canvas如何生成一张透明背景色的图片

ppylox
·9/10/2023·0 阅读
AI 摘要模型根据正文自动生成,仅供参考

使用html2canvas生成图片时,若元素有圆角效果,默认白色背景会导致截图出现白底圆角问题。解决方法是在配置项中设置backgroundColor为null或transparent,将canvas背景设为透明。示例代码同时开启useCORS跨域配置、allowTaint允许跨域图片,并通过canvas.toDataURL生成PNG图片地址,再创建a标签设置download属性并触发click事件实现自动下载。

最近给后台管理系统的小工具模块新增了一个文字美化功能,就是输入一段文字可以生成一张好看的图片分享出去。通常情况下使用html2canvas就可以实现,但是如果设置了圆角效果的话,生成的图片虽然会显示圆角,但是由于背景色是默认的白色,所以截出来的图显示的是白色的背景加上圆角,效果非常不好。

要解决这个问题,可以通过设置html2canvas的option中的backgroundColor属性将背景设为透明色即可,设置为空即可:

    // word-container就是我们要获取截图对应的 DOM 元素选择器\n    Html2canvas(document.querySelector('.word-container'), {\n      useCORS: true, // 【重要】开启跨域配置\n      backgroundColor: null, // null或transparent可将canvas背景设置为透明,解决圆角问题\n      // scale: window.devicePixelRatio < 3 ? window.devicePixelRatio : 2,\n      // dpi: window.devicePixelRatio * 2, //设备像素比\n      allowTaint: true, // 允许跨域图片\n    }).then((canvas) => {\n      const url = canvas.toDataURL('image/png', 1.0);\n      let a = document.createElement("a"); // 生成一个a元素\n      a.download = "download.png"; // 设置图片名称\n      a.href = url; // 将生成的URL设置为a.href属性\n      a.click();\n    });

按照以上配置设置后,还可以通过a链接引入生成的图片地址,再添加click事件,即可实现自动下载了。

相关文章

评论 (0)

暂无评论,来写第一条吧