使用dom-to-image截图html区域为一张图

devtools/2024/9/22 11:47:22/

第一步安装npm i dom-to-image
第二步引入:import domToImage from 'dom-to-image';
第三步截图:

// 截图
function screenshot() {return new Promise((resolve, reject) => {const images = document.querySelectorAll('.isCrossOrigin'); //给需要截图的图片都加上clss名称便于获取const videos = imageWrapper.value.querySelectorAll('video'); // 获取画布下所有视频元素// 隐藏所有视频元素,因为截出来的视频是黑屏videos.forEach((video) => {video.style.display = 'none';});images.forEach((img) => {// 保存原始的图片地址const originalSrc = img.getAttribute('src');// 移除 src 属性,设置 crossOrigin解决图片跨域,然后再设置 srcimg.removeAttribute('src');img.crossOrigin = 'anonymous';img.src = originalSrc;});domToImage.toBlob(imageWrapper.value, {cacheBust: true,  //添加 cacheBust 选项以确保不会使用缓存图片width: bgSrcWidth.value,height: bgSrcHeight.value,}).then(function (blob) {// 截图成功后,去除跨域设置images.forEach((img) => {img.removeAttribute('crossOrigin');});// 显示视频元素videos.forEach((video) => {video.style.display = 'block';});const formData = new FormData();formData.append('file', blob, 'image.png');uploadBgImg(formData).then((res) => {resolve(res.data)})}).catch((err) => {// 如果出现错误,去除跨域设置并恢复所有视频元素images.forEach((img) => {img.removeAttribute('crossOrigin');});videos.forEach((video) => {video.style.display = 'block';});reject(err);})})
}

缺点:截图时间特别长,视频截图是黑屏,暂时还没解决,大家有解决的欢迎指正~


http://www.ppmy.cn/devtools/115438.html

相关文章

【Linux学习】基本指令其一

命令行界面 命令行终端是一个用户界面,允许用户通过输入文本命令与计算机系统进行交互。 比如Windows下, 键入winR,然后输入cmd,就可以输入文本指令与操作系统交互了。 Windows有另一个命令行界面Powershell,它的功能比cmd更强大…

一个基于 laravel 和 amis 开发的后台框架, 友好的组件使用体验,可轻松实现复杂页面(附源码)

前言 随着互联网应用的发展,后台管理系统的复杂度不断增加,对于开发者而言,既要系统的功能完备,又要追求开发效率的提升。然而,传统的开发方式往往会导致大量的重复劳动,尤其是在构建复杂的管理页面时。有…

Netty源码-业务流程之构建连接

Netty基本介绍,参考 Netty与网络编程 1、Netty构建连接 构建连接的流程 1.1 我们知道客户端连接服务端都是通过NioEventLoop来处理请求,NioEventLoop是一个线程,连接进来首先进入run()方法。 所以我们需要启动服务端,然后再启动…

力扣最热一百题——搜索二维矩阵

目录 题目链接:240. 搜索二维矩阵 II - 力扣(LeetCode) 题目描述 解法一:暴力不解释 Java写法: 运行时间 C写法: 运行时间 时间复杂度以及空间复杂度 解法二:利用自带的大小关系进行Z型走…

【工具变量】科技金融试点城市DID数据集(2000-2023年)

时间跨度:2000-2023年数据范围:286个地级市包含指标: year city treat post DID(treat*post) 样例数据: 包含内容: 全部内容下载链接: 参考文献-pdf格式:https://…

LangChain教程 - 向量存储与检索器

系列文章索引 LangChain教程 - 系列文章 介绍 在这个教程中,你将了解 LangChain 的向量存储和检索器抽象。这些抽象旨在支持从(向量)数据库和其他来源检索数据,并将其集成到大语言模型(LLM)的工作流程中。…

AWS账号可以共用吗?

小伙伴们,大家好!今天九河云来聊聊另一个大家可能关心的问题:AWS账号可以共用吗?很多团队或公司在使用AWS服务时,可能会考虑共用一个账号以节省成本或者简化管理。那么,这样做是否可行呢?让我们…

WebGL缓冲区

一、缓冲区对象 缓冲区对象时WebGL系统中的一块内存区域,可以一次性地向缓冲区对象中填充大量的顶点数据,然后将这些数据保存其中,供顶点着色器使用。 类型化数组 这样程序可以预知数组中的类型,提高性能 类型描述Int8Array8位…