JS使用html2canvas将html元素转换为图片并添加水印

JS使用html2canvas将html元素转换为图片并添加水印

引入html2canvas 库

<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.2/html2canvas.min.js"></script>

完整代码

使用html2canvas 库来将 div 转换为图片,在获取到 canvas 后,我们获取了 2D 绘图上下文(ctx),然后使用 ctx.fillText() 方法在图片上添加了文本水印

<!DOCTYPE html>
<html>
  <head>
    <title>Div转换为图片</title>
    <script>
      function convertToImage() {
        // 获取要转换为图片的 div 元素
        var div = document.getElementById("content");

        // 创建一个新的 Canvas 元素
        var canvas = document.createElement("canvas");
        canvas.width = div.offsetWidth;
        canvas.height = div.offsetHeight;

        // 获取 Canvas 的 2D 上下文
        var ctx = canvas.getContext("2d");

        // 将 div 的内容绘制到 Canvas 上
        html2canvas(div, { allowTaint: true }).then(function (canvas) {
          // 创建一个新的Canvas元素用于添加水印
          var watermarkCanvas = document.createElement("canvas");
          var watermarkCtx = watermarkCanvas.getContext("2d");

          // 设置新Canvas的宽高和原始Canvas一致
          watermarkCanvas.width = canvas.width;
          watermarkCanvas.height = canvas.height;

          // 将原始图像绘制到新Canvas上
          watermarkCtx.drawImage(canvas, 0, 0);

          // 水印文本样式
          watermarkCtx.font = "16px Arial"; //水印字体大小
          watermarkCtx.fillStyle = "red"; //水印颜色
          watermarkCtx.textAlign = "left";
          let obj = {
            name: "张三",
            age: 18,
          };
          // 多行水印文本
          var lines = [`姓名:${obj.name}`,`年龄:${obj.age}`];
          var lineHeight = 24; // 行高
          var leftMargin =10; // 左侧边距
          var bottomMargin = 10; // 底部边距
          // 从底部开始绘制水印文本
          lines.reverse().forEach(function (line, index) {
            var yPosition =
              watermarkCanvas.height - bottomMargin - index * lineHeight;
            watermarkCtx.fillText(line, leftMargin, yPosition);
          });

          // 将新Canvas转换为图像并显示在页面上
          var watermarkImg = new Image();
          watermarkImg.src = watermarkCanvas.toDataURL("image/png");
          document.body.appendChild(watermarkImg);
        });
      }
    </script>
    // 引入html2canvas 库
    <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.2/html2canvas.min.js"></script>
  </head>
  <body>
    <div id="content">
      <!-- 这里是要转换为图片的 div 内容 -->
      <h1>Hello, World!</h1>
      <p>This is a div element.</p>
    </div>
    <button onclick="convertToImage()">转换为图片</button>
  </body>
</html>

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值