当前位置: 首页 > news >正文

html2canvas将页面dom元素内容渲染成图片保存至本地

html2canvas:https://html2canvas.hertzen.com/configuration/
github:https://github.com/niklasvh/html2canvas

效果
在这里插入图片描述

在这里插入图片描述

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/html2canvas.js"></script>
</head><body><div id="root"><h3>名片</h3><div class="person"><img src="./assets/header.png" alt=""></div></div><button id="downloadImg">点击</button>
</body><script>let dom = document.getElementById("downloadImg");dom.onclick = function () {// 实现保存为图片的第一步:html转为canvashtml2canvas(document.getElementById("root"), {scale: window.devicePixelRatio,height: 800,width: 800,backgroundColor: null//设置背景透明}).then(function (canvas) {let link = document.createElement('a');// 实现保存图片的目标只需要将canvas转image即可。// canvas的toDataURL方法将canvas输出为data: URI类型的图片地址,再将该图片地址赋值给元素的src属性即可。link.href = canvas.toDataURL();// 保存图片link.setAttribute('download', '图片canvas.png');link.style.display = 'none';document.body.appendChild(link);link.click();document.removeChild(link)});}
</script></html>

当图片来源于服务器,需要设置跨域

<body><div id="root"><h3>名片</h3><div class="person"><img style="width: 600px; height: 400px;" src="https://img0.baidu.com/it/u=3976250177,3245140550&fm=253&fmt=auto&app=120&f=JPEG?w=1200&h=675" alt=""></div></div><button id="downloadImg">点击</button>
</body><script>let dom = document.getElementById("downloadImg");dom.onclick = function () {// 实现保存为图片的第一步:html转为canvashtml2canvas(document.getElementById("root"), {useCORS: true,//图片设置跨域scale: window.devicePixelRatio,height: 800,width: 800,// backgroundColor: null}).then(function (canvas) {let link = document.createElement('a');// 实现保存图片的目标只需要将canvas转image即可。// canvas的toDataURL方法将canvas输出为data: URI类型的图片地址,再将该图片地址赋值给元素的src属性即可。link.href = canvas.toDataURL();// 保存图片link.setAttribute('download', '图片canvas.png');link.style.display = 'none';document.body.appendChild(link);link.click();document.removeChild(link)});}
</script>
http://www.lryc.cn/news/23967.html

相关文章:

  • 前端进阶JS运行原理
  • Python识别二维码的两种方法(cv2)
  • 用一个例子告诉你 怎样使用Spark中RDD的算子
  • 什么是跨域? 出现原因及解决方法
  • 低代码系统能够解决哪些痛点?
  • 华为OD机试题,用 Java 解【两数之和绝对值最小】问题
  • AcWing算法提高课-3.1.1热浪
  • 华为OD机试题【最差产品奖】用 C++ 编码,速通 (2023.Q1)
  • NFT市场大战:Blur市场地位可持续吗?
  • 初识CSS
  • kubernetes(k8s)知识总结(第3期)
  • 浅谈跨境电商运行模式
  • Memcached
  • Unity UGUI 拖拽组件
  • 面试总结——react生命周期
  • 初探推荐系统-01
  • html实现浪漫的爱情日记(附源码)
  • detectron2容器环境安装问题(1)
  • JAVA线程池原理详解二
  • Java 常用 API
  • 记一次分布式环境下TOKEN实现用户登录
  • 用cpolar发布本地的论坛网站 1
  • CSS的4种引入方式
  • Shell高级——Linux中的文件描述符(本质是数组的下标)
  • Nvidia jetson nano硬件架构
  • ffmpeg多路同时推流
  • 一次性搞定 `SHOW SLAVE STATUS` 的解读
  • 【代码随想录训练营】【Day25】第七章|回溯算法 |216.组合总和III|17.电话号码的字母组合
  • docker使用
  • 手把手docker registry配置登录名/密码