使用html2canvas将页面保存成图片

使用html2canvas将页面保存成图片

将整个页面转成画布
代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>hangge.com</title>
  </head>
  <body style="margin:0px">
    <div id="capture" style="padding: 10px; background: #f5da55; width: 200px;">
      <h4 style="color: #000; ">欢迎访问 hangge.com</h4>
    </div>
    <button type="button" name="button" onclick="convert()">开始生成</button>
    <br>
    <script type="text/javascript" src="js/html2canvas.js"></script>
    <script type="text/javascript">
      //开始转换
      function convert() {
        html2canvas(document.body).then(canvas => {
          document.body.appendChild(canvas)
        });
      }
    </script>
  </body>
</html>

将指定DOM元素转成Canvas

html2canvas(document.querySelector("#capture")).then(canvas => {
  document.body.appendChild(canvas)
});

将Canvas转换成base64形式
(1)上面的样例生成画布后,便直接显示在页面上进行预览。我们也可以将生成的画布转成base64形式提交到后台,或者作为元素的src属性来显示。

html2canvas(document.querySelector("#capture")).then(canvas => {
  var imgUrl = canvas.toDataURL("image/png"); // 将canvas转换成img的src流
  console.log("base64编码数据:", imgUrl);
});

(2)转换时可以设置截图质量(0〜1)

html2canvas(document.querySelector("#capture")).then(canvas => {
  var imgUrl = canvas.toDataURL("image/png", 1); // 此方法可以设置截图质量(0-1)
  console.log("base64编码数据:", imgUrl);
});

设置生成的Canvas的高度和宽度

html2canvas(document.querySelector("#capture"),{
  width: 75,
  height: 75
}).then(canvas => {
  document.body.appendChild(canvas)
});

设置Canvas的背景色

(1)使用backgroundColor这个属性可以设置canvas的背景色:

  • 默认值为白色(#FFFFFF)
  • 如果想要背景透明,可以将其设为null

(2)将背景色改成绿色

html2canvas(document.querySelector("#capture"),{
  width: 240,
  height: 120,
  backgroundColor: "#00ff00"
}).then(canvas => {
  document.body.appendChild(canvas)
});

设置放大倍数
(1)使用规模属性可以修改渲染时的放大倍数(至少为1),将其调大可以解决低分辨率设备下生成的图片模糊问题。
(2)下面是当scale设置为2时

html2canvas(document.querySelector("#capture"),{
  scale: 2
}).then(canvas => {
  document.body.appendChild(canvas)
});

指定渲染

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>hangge.com</title>
  </head>
  <body style="margin:0px">
    <div id="capture" style="padding: 10px; background: #f5da55; width: 200px;">
      <h4 style="color: #000; ">欢迎访问 hangge.com</h4>
    </div>
    <button type="button" name="button" onclick="convert()">开始生成</button>
    <br>
    <canvas id="myCanvas" width="220" height="84"></canvas>
    <script type="text/javascript" src="js/html2canvas.js"></script>
    <script type="text/javascript">
      //开始转换
      function convert() {
        html2canvas(document.querySelector("#capture"),{
          canvas: document.querySelector("#myCanvas")
        }).then(canvas => {
 
        });
      }
    </script>
  </body>
</html>

附:自动保存为图片并下载

(1)上面的样例如果要将DOM元素转换为图片保存下来,都是先将其转成画布,然后再手动在画布上单击鼠标右键,通过“另存为”功能下载到本地。
(2)如果想要实现图片自动生成,自动下载的话可以替换FileSaver.js这个第三方库。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>hangge.com</title>
  </head>
  <body style="margin:0px">
    <div id="capture" style="padding: 10px; background: #f5da55; width: 200px;">
      <h4 style="color: #000; ">欢迎访问 hangge.com</h4>
    </div>
    <button type="button" name="button" onclick="convert()">开始生成</button>
    <br>
    <script type="text/javascript" src="js/html2canvas.js"></script>
    <script type="text/javascript" src="js/FileSaver.js"></script>
    <script type="text/javascript">
      //开始转换
      function convert() {
        html2canvas(document.querySelector("#capture")).then(canvas => {
          //将canvas内容保存为文件并下载
          canvas.toBlob(function(blob) {
             saveAs(blob, "hangge.png");
          });
        });
      }
    </script>
  </body>
</html>

FileSaver.js

  1. 保存文本文件
    下面代码在浏览器打开后会自动生成文件并导出:
  <!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="FileSaver.min.js" charset="utf-8"></script>
    <script type="text/javascript">
      var blob = new Blob(["欢迎访问 hangge.com"], {type: "text/plain;charset=utf-8"});
      saveAs(blob, "文件导出测试.txt");
    </script>
  </head>
  <body>
  </body>
</html>

下面是另一种写法,实现的效果和上面的是一样的。

var file = new File(["欢迎访问 hangge.com"], "文件导出测试.txt", {type: "text/plain;charset=utf-8"});
saveAs(file);
  1. 保存图片
    下面代码会在页面上的 Canvas 中绘制一个矩形,并将其自动导出成图片:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="FileSaver.min.js" charset="utf-8"></script>
    <script type="text/javascript">
      function onload() {
        //在canvas上绘制矩形
        var canvas = document.getElementById("myCanvas");
        var context = canvas.getContext("2d");
        context.fillStyle = "blue"; //填充颜色
        context.fillRect(50,50,200,100); 绘制实心矩形
 
        //将canvas内容保存为文件并下载
        canvas.toBlob(function(blob) {
            saveAs(blob, "hangge.png");
        });
      }
    </script>
  </head>
  <body onload="onload()">
    <canvas id="myCanvas" width="400" height="200">
  </body>
</html>

访问页面后可以看到浏览器会自动下载文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值