ThreeJS-截屏下载pdf或者图片时白屏

news2024/11/20 13:27:10

JS-页面截图下载为pdf
关于如何下载为 pdf 在上面的这篇文章中有写,大家可以看下,下载图片代码在最下面
这时我们发现 three 部分是空白的如下:
在这里插入图片描述
这就多少有点尴尬了,这时我们习惯性的看下后台报错
在这里插入图片描述
是不是发现了惊喜,html2canvas其实已经给我报错了,而且还很贴心的给出了解决方案,我们先上代码:

renderer = new THREE.WebGLRenderer({ 
  antialias: true,  // 启用抗锯齿功能
  preserveDrawingBuffer: true
});

其实就是给 WebGLRenderer 多传了一个参数,那这个是什么意思呢?请添加图片描述
官方解释:是否保留缓冲区直到手动清除或重写。默认值为false。
preserveDrawingBuffer 是一个WebGL渲染器选项,用于确定是否在多个渲染循环中保留drawing buffer。如果设置为true,则drawing buffer在多个渲染循环中会被保持,这可以提高性能,但可能会占用更多的内存。

请注意,这个选项在WebGL渲染器的默认行为中并不常用,因为通常WebGL会在每次渲染后自动清除drawing buffer。设置preserveDrawingBuffer为true可能会导致性能问题或内存问题,特别是如果你在渲染循环中不断请求帧缓存的像素数据。

下载为图片:

const downloadPDF = () => {
  const element: any = document.querySelector('.app');
  // const { scrollHeight, scrollWidth, offsetHeight, height } = element;
  const opts = {
    scale: 3, // 缩放比例,提高生成图片清晰度
    useCORS: true, // 允许加载跨域的图片
    allowTaint: false, // 允许图片跨域,和 useCORS 二者不可共同使用
    tainttest: true, // 检测每张图片都已经加载完成
    logging: true, // 日志开关,发布的时候记得改成 false
    height: element.offsetHeight
  };
  html2canvas(element, opts).then((canvas) => {
	const link = document.createElement('a');
	// 通过超链接herf属性,设置要保存到文件中的数据
	link.href = canvas.toDataURL("image/png");
	link.download = 'aaa.png'; // 下载文件名
	link.click(); // js代码触发超链接元素a的鼠标点击事件,开始下载文件到本地
  });
};

请大家注意如果 three 中有用到 CSS2DRenderer 或者 CSS3DRenderer,这个也要加

labelRenderer = new CSS2DRenderer({
  preserveDrawingBuffer: true
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1838081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

配电室数据中心巡检3d可视化搭建的详细步骤

要搭建配电室巡检的3D可视化系统,可以按照以下步骤进行: 收集配电室数据: 首先,需要收集配电室的相关数据,包括配电室的布局、设备信息、传感器数据等。可以通过实地调查、测量和设备手册等方式获取数据。 创建3D模型…

专访毫末智行COO 侯军:自动驾驶,水深鱼才大

站在当下,回看自动驾驶赛道的各个玩家们,活下去的要不就是“家里有矿”,要不就是场景、技术降维,渐进式发展。但活的好的有一个共性,就是顺应需求,让技术落于产业实处。 作者|斗斗 出品|产业家 “我们认…

无线传感器网络技术原理及应用

第一章 简述无线传感器网络的概念及与传统无线网络的区别。 无线传感器网络的概念:无线传感器网络是由部署在监测区域内大量的廉价微型传感器节点组成,通过无线通信方式形成的一个多跳的自组织网络系统,其目的是协作地感知、采集和处理网络…

基于STM32和人工智能的智能楼宇安防系统

目录 引言环境准备智能楼宇安防系统基础代码实现:实现智能楼宇安防系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:智能楼宇安防管理与优化问题解决方案与优化收尾与总结 1. 引言 随着物联网和人工智能技术的…

FragPunk联机延迟高、联机闪退、无法组队的解决方法

FragPunk是一款最新的5V5射击游戏。游戏中,有超过70张的技能卡,每一张都拥有独特的功能,比如说生成草丛、让伤害可以传导到敌方队伍每个人身上、让手枪也能喷火、召唤死神等等,功能很丰富,这些卡让每轮战斗都充满了变化…

Python Django Vue3 在线商城网站 在线商城后台管理 案例源码

源码地址获取 演示视频 Python DjangoVue3 在线商城网站,商城管理后台系统案例源码 附带运行教程,开发工具,系统运行演示 技术栈:Django Vue3 开发工具:Pycharm 后端构建工具:Pip 前端构建工具:WebPack 运行环境:Windows Python版本:3.11 Nod…

2024年全球架构师峰会(ArchSummit深圳站)

前言 ArchSummit全球架构师峰会是极客邦科技旗下InfoQ中国团队推出的重点面向高端技术管理者、架构师的技术会议,54%参会者拥有8年以上工作经验。 ArchSummit聚焦业界强大的技术成果,秉承“实践第一、案例为主”的原则,展示先进技术在行业中的…

Prometheus常见exporter安装部署

Prometheus常见exporter安装部署 在稳定性环境的监控当中需要收集各种各样的数据,这样的数据收集是通过各种exporter进行的,在这里我们进行最常用稳定性数据的收集exporter安装部署介绍。 node_exporter安装部署 node_exporter主要监控服务器本身的一…

lib9-02 配置扩展 ACL

实验:配置扩展 ACL 1、实验目的 通过本实验可以掌握编号扩展 ACL 定义和应用的方法命名扩展 ACL 定义和应用的方法 2、实验拓扑 实验拓扑如下图所示。使用扩展 ACL 实现如下访问控制 拒绝 PC1 所在网段访问 Server1 的 Web 服务拒绝 PC2 所在网段访问 Server1 …

AI在创造还是毁掉音乐?

简介 最近一个月,轮番上线的音乐大模型,一举将素人生产音乐的门槛降到了最低,并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后,AI产品的版权归属于谁,创意产业要如何在AI的阴影下生长,都在被更多理…

学会python——制作一款天气查询工具(python实例七)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、天气查询工具 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…

新手小白系列——关于 Docker 安装的方法

Docker 是一个应用打包、分发、部署的工具基础概念: 镜像:软件安装包,可以方便的进行传播和安装。 容器:软件安装之后的状态,每个软件运行环境都是独立的、隔离的,称之为容器 仓库:专门用来传播…

【Cloudscapes V2】Blender商城10周年免费领取礼物超逼真的Vdb云和爆炸合集烟雾体积云字体符号轨迹火焰粒子

6月19号的限时免费领取插件挺牛的,可以在blender里渲染体积云、爆炸特效、火焰、烟雾等效果,非常逼真。 Blender商城10周年免费领取礼物:https://blendermarket.com/birthday Cloudscapes V2 - 超逼真的 Vdb 云和爆炸合集 CloudScapes 是 …

vue3中实现3D地图——three.js

需求点 地图区域大小随着父盒子大小变动,窗口缩放自动适配每个区域显示不同颜色和高度,描边每个区域显示名字label和icon点击区域改变其透明度,并且弹窗显示信息窗口点击点也可以可以自由放大缩小,360度旋转 包 npm install d3^…

六西格玛培训新选择,老字号品质有保障!

在追求企业卓越与完美的道路上,六西格玛管理无疑是一个被广泛认可与采纳的方法论。六西格玛不仅仅是一种管理策略,更是一种文化和哲学,它强调通过数据驱动和持续改进来减少流程中的缺陷,提升客户满意度,并最终实现企业…

两轮车换电也卷得不行?铁塔换电、这锂换电浴血奋战

配图来自Canva可画 当两轮电动车智能化和高端化竞争,无法再有更多突破,卷无可卷时,换电这个具有巨大潜力的新兴领域,引起了市场的关注。 早在多年前,哈啰、美团、雅迪等两轮电动车品牌就推出自己的换电品牌。据不完全…

【Java毕业设计】基于JavaWeb的物流信息网系统

文章目录 摘 要Abstract目录1 绪论1.1 课题背景和意义1.2 国内外研究现状1.2.1 国外研究现状1.2.2 国内研究现状1.3 课题主要内容 2 开发相关技术介绍2.1 系统开发环境2.2 系统开发技术2.2.1 Spring Boot框架2.2.2 MySQL数据库 3 系统规划3.1 初步调查分析3.2 可行性分析3.2.1 …

一文彻底搞懂 Transformer(图解+手撕)

Transformers 亮相以来彻底改变了深度学习模型。 今天,我们来揭示 Transformers 背后的核心概念:注意力机制、编码器-解码器架构、多头注意力等等。通过 Python 代码片段,让你深入了解其原理。 一、理解注意力机制 注意力机制是神经网络中…

Java Stream流应用

Stream流的核心方法 Stream流的方法主要包含如图的几种 提供部分应用场景做个思考: (1)从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。 (2)统计员工的最高薪资、平均薪资、薪资之和。 (3)将员工按薪资从高到低排序,同样薪资…

编曲旋律怎么配和弦 旋律怎么编曲 编曲和弦怎么写

在音乐的创作中,编曲旋律与和弦是两个重要的元素,它们相辅相成,共同构建出动听的音乐作品。而编曲旋律与和弦之间的搭配,就需要合理的安排和设计,才能达到最佳的效果。接下来给大家介绍编曲旋律怎么配和弦,…