js利用html2canvas实现dom元素转图片下载

news/2024/7/19 13:59:17 标签: js, canvas

业务场景: 需要对页面进行截图保存
技术: JS截图插件html2canvas.js
实现在用户浏览器端直接对整个或部分页面进行截屏。
如图点击下方保存图片按钮进行上方页面转换成图片保存
在这里插入图片描述

首先 安装html2canvas依赖

npm install --save html2canvas

在所需页面引入

import html2canvas from 'html2canvas'

js相关代码

 saveImg() {
      let container = document.getElementById('savaImg')
      html2canvas(container, {
        width: container.clientWidth,
        height: container.clientHeight,
        ignoreElements: (element) => { // 忽略不被绘制的dom元素
          return element.className === 'tool product-view-tool'
        }
      }).then(canvas => {
        let src = canvas.toDataURL('image/jpg', 1)
        let image = new Image()
        image.src = src
        let url = image.src.replace(/^data:image\/[^;]/, 'data:application/octet-stream')
        let a = document.createElement('a')
        a.download = '海报.jpg' // 设置下载的文件名,默认是'下载'
        a.href = url
        document.body.appendChild(a)
        a.click()
        a.remove() // 下载之后把创建的元素删除
      })
 },

实现效果
在这里插入图片描述

没错。是我要的效果 ,但是图片没有显示,是肯定不行的
原因:不是本地图片有跨域问题,
so 在加一个参数
在这里插入图片描述
最终效果
在这里插入图片描述


http://www.niftyadmin.cn/n/874709.html

相关文章

python opencv local_threshold_Python+OpenCV图像处理之图像二值化实现代码

本篇文章小编给大家分享一下PythonOpenCV图像处理之图像二值化实现代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。 图像二值化就是将图像上的像素点的灰度值设置为0或255&am…

vue 一个动态链接url转成二维码

安装相关的依赖包 npm install qrcode2 --savetemplate中需要展示的容器 <div id"qrcode" ref"qrcode"></div>不要不忘了引入这个组件 components: { QRCode },在js代码中写入转换为二维码方法 //生成二维码qrcodeScan() {//这里是为了 每次…

vb.net源码获取优盘序列号_并发类 AtomicLong 使用入门及源码详解

AtomicLong 介绍AtomicLong可以原子更新的 Long 值。AtomicLong用于诸如原子递增的序列号之类的应用程序中&#xff0c;并且不能用作Long的替代品。但是&#xff0c;此类确实扩展了Number&#xff0c;以允许通过处理基于数字的类的工具和实用程序进行统一访问。API 直接查阅 JD…

vue h5 实现一键复制文案功能

点击按钮&#xff0c;实现一键复制纯文案的功能&#xff0c;代码如下&#xff1a; 方法一 原生的方法 一般在浏览器上使用 copyUrl() {let url this.codeUrllet domInput document.createElement(input);domInput.value url;document.body.appendChild(domInput); // 添…

matlab 画同colorbar的图_利用Matlab处理Lumerical FDTD的三角纳米片电场分布仿真结果...

FDTD计算得到的电场分布&#xff0c;但是FDTD通过另存为jpg或者截屏所得到的图片分辨率很低&#xff0c;得到的图片往往不能直接使用。因此&#xff0c;可以通过脚本输入到Maltab&#xff0c;然后再利用Matlab处理图片并输出。  但是将数据从FDTD输出到Matlab中&#xff0c;并…

启动vue时ESLint报错解决方案

默认情况下&#xff0c;ESLint和vscode格式化工具有冲突 Eslint语法太严格&#xff0c;有好几种方法关闭方法。这里直接用个简单的关闭方法 在vue.config.js中添加如下代码&#xff0c;重新nmp run dev 就能正常运行了 lintOnSave: false,//关闭eslint报错和警告

python发邮件未命名附件_python3发邮件,附件名称为中文时出错

问题描述 我写了一个发邮件的类&#xff0c;一切进行的很顺利&#xff0c;但是附件名改成中文的时候就出问题了 问题出现的环境背景及自己尝试过哪些方法 用的是python3*和email包 是了MIMEText、MIMEApplication、MIMEBase都不行 相关代码 // 请把代码文本粘贴到下方&#xff…

vue项目接口响应之前默认给所有接口加上公共参数的操作

在request.js中的请求拦截器里面添加如下代码 如果是get请求 需要在URL后面拼接的话 用到的是 config.params {appkey:appkey}如果是post请求 不需要在URL后面拼接的话 用到的是 config.data {appkey:appkey}那这时候直接添加会有问题 在请求拿到的参数中只会拿到你添加的…