使用html2canvas将h5页面转换成图片保存至本地

需求:用户点击保存按钮,将页面保存到本地。

这里使用html2canvas插件库,具体用法如下:

(1)安装依赖包:

//npm方式
npm install --save html2canvas
//yarn方式
yarn add html2canvas

(2)引入并使用

复制代码
import html2canvas from "html2canvas"

//html层
<div id="canvasImg" className={styles.cardWrapper}>
  这里是需要保存成图片的内容
</div>
<Button
  className={styles.mainButton}
  block
  shape='rounded'
  color='primary'
  onClick={()=>  saveToImg() }
>
  保存图片
</Button>

//js层
function saveToImg() {
  //点击保存按钮的回调事件
  const element: HTMLElement = document.getElementById('canvasImg') as HTMLElement; // 需要导出的页面
  html2canvas(element, {
    allowTaint: true,
    useCORS: true,
  }).then((canvas) => {
    // imgUrl 是图片的 base64格式 代码 png 格式
    const imgUrl = canvas.toDataURL('image/png');
    //下载图片的功能。
    downloadIamge(imgUrl, "plantCardImg.png")
  });
}

function downloadIamge(imgsrc:string, name:string) {  //下载图片地址和图片名
  const image = new Image();
  // 解决跨域 Canvas 污染问题
  image.setAttribute("crossOrigin", "anonymous");
  image.onload = function () {
    let canvas = document.createElement("canvas");
    canvas.width = image.width;
    canvas.height = image.height;
    const context = canvas.getContext("2d");
    context.drawImage(image, 0, 0, image.width, image.height);
    const url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
    const a = document.createElement("a"); // 生成一个a元素
    const event = new MouseEvent("click"); // 创建一个单击事件
    a.download = name || "photo"; // 设置图片名称
    a.href = url; // 将生成的URL设置为a.href属性
    a.dispatchEvent(event); // 触发a的单击事件
  };
  image.src = imgsrc;
}
复制代码

 注意:以上方式仅支持在纯h5页面实现下载。如果是APP内嵌h5页面进行下载的话,请查看以下解决方法:

App中内嵌h5页面 无法实现下载功能

 

posted @   Morango  阅读(3517)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示