推荐一款H5生成海报利器html2canvas

在H5开发中,我们经常会遇上动态生成海报的需求,而在Web前端中,生成图片非Canvas莫属。html2canvas.js就是一款优秀的插件,它可以轻松地帮你将HTML代码转换成Canvas,从而生成可保存分享的图片。

在H5开发中,我们经常会遇上动态生成海报的需求,而在Web前端中,生成图片非Canvas莫属。html2canvas.js就是一款优秀的插件,它可以轻松地帮你将HTML代码转换成Canvas,从而生成可保存分享的图片。

一、安装

npm 安装

npm install --save html2canvas

yarn 安装

yarn add html2canvas

直接引入html2canvas.js

<script src="http://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>

二、使用

我们先拿 vue 来举例

<div ref="picture">
    <h4>Hello world!</h4>
</div>
// 配置项
const config= {
    useCORS: true, // 使用跨域
};
html2canvas(this.$refs.picture, config).then((canvas) => {
    document.body.appendChild(canvas); // 自动在下方显示绘制的canvas图片
});

如果想要将图片导出,可以这样写

// 生成图片
creatImg() {
    const config= {
        useCORS: true, // 使用跨域
    };
    html2canvas(this.$refs.picture, config).then((canvas) => {
        const link = canvas.toDataURL("image/jpg");
        this.exportPicture(link, "文件名");
    });
}

// 导出图片
exportPicture(link, name = "未命名文件") {
    const file = document.createElement("a");
    file.style.display = "none";
    file.href = link;
    file.download = decodeURI(name);
    document.body.appendChild(file);
    file.click();
    document.body.removeChild(file);
}

普通html的写法

<div id="capture" style="padding: 10px; background: #f5da55">
    <h4 style="color: #000; ">Hello world!</h4>
</div>
html2canvas(document.querySelector("#capture")).then(canvas => {
    let oImg = new Image();
    oImg.src = canvas.toDataURL();  // 导出图片
    document.body.appendChild(oImg);  // 将生成的图片添加到body
});

可能出现的问题及相应解决方案

图片不显示问题

因为图片素材出现跨域,也就是说图片所在的域名与你项目所在域名不一致; 图片放在CDN上也会导致不显示,所以需要配置相关的跨域操作;

var opts = {

    useCORS: true // 【重要】开启跨域配置
};
html2canvas(document.querySelector("#capture"), opts).then(canvas => {
  document.body.appendChild(canvas);
});

还有一种方式就是图片可以使用base64的方式替代,这样不会产生跨域的问题

以上这篇推荐一款H5生成海报利器html2canvas就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持芦苇派。

原创文章,作者:ECHO陈文,如若转载,请注明出处:https://www.luweipai.cn/html/1681193001/

  • 3