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

一、安装

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
});

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

1、图片不显示问题

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

var opts = {

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

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

2、生成透明背景的图片

在opts里加个参数backgroundColor,如果想把背景换成别的就把这个设置成自己想要的颜色就行了。

html2canvas(document.querySelector("#capture"),{
   backgroundColor: null, //设置图片背景为透明
}).then(canvas => {
    let oImg = new Image();
    oImg.src = canvas.toDataURL();  // 导出图片
    document.body.appendChild(oImg);  // 将生成的图片添加到body
});
本文来自转载,文章内容不代表随笔博客立场。
原文链接:推荐一款H5生成海报利器html2canvas
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
(1)
上一篇 2023年 11月 3日 上午10:42
详解定时任务中的 cron 表达式
下一篇 2023年 12月 1日 上午10:52

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

评论列表(1条)

联系我们

在线咨询: QQ交谈

邮件:jctestxcx@163.com

关注微信