欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 使用dom-to-image截图html区域为一张图

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

2024/10/24 15:23:56 来源:https://blog.csdn.net/qdm13209211861/article/details/142324249  浏览:    关键词:使用dom-to-image截图html区域为一张图

第一步安装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);})})
}

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com