千家信息网

Three.js截图并下载的坑有哪些

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,小编给大家分享一下Three.js截图并下载的坑有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先来看看普通页面的截图
千家信息网最后更新 2025年02月23日Three.js截图并下载的坑有哪些

小编给大家分享一下Three.js截图并下载的坑有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

先来看看普通页面的截图

一开始看到这个,完全没思路,普通的html标签要怎么才能变成一张图???,其实嘞,目前的截图方案都并不是我们理解的那种截图,不管是使用canvas还是svg,其实都是做了转化,但是这两种方法都不在这详细描述了,有兴趣的可以看看这篇,说的很详细了(canvas VS svg 截图),然鹅,肯定是有工具的啦,那就是git上开源的 html2canvas ,有好多小星星呀,并且使用超简单,但是原理也是将html的标签重新绘制到canvas中,其中也有很多不能解决的问题,比如什么文本阴影啊,竖版图片啊之类的,还有!!动画元素截取不出来!!!!!,截屏出来是白屏。

怎么解决嘞

为什么是白屏:

截取three.js 渲染的图,如果直接将输出的canvas变成图片是无法获取的,因为在获取之前渲染界面是清空的状态,所以需要在渲染之后清空之前将渲染的内容转换为图片,即将场景的内容渲染一遍并将渲染的内容转为图片数据。

解决方案:

shot(){   let image = new Image();   renderer.render(scene, camera);//renderer为three.js里的渲染器,scene为场景 camera为相机   let imgData = renderer.domElement.toDataURL("image/jpeg");//这里可以选择png格式jpeg格式   image.src = imgData;   document.body.appendChild(image);//这样就可以查看截出来的图片了}

划重点:

其实就是相当于渲染一帧,并把这一帧输出 而如果需要截某个部分的图片,只需要将相机变一下,换成自己想要范围,并渲染一帧再截屏出来。 优点非常明显, 这样相当于重新渲染一帧,即便是截取某个很小的部分,截取的图片也是很清晰的。

截完图之后嘞

我想要的呢是将截的图展示在新的页面上,可是生成的图片并不是base64的码,所以我们要将渲染的canvas转化为base64的图片,toDataURL可以直接做到,然后展示在新窗口就好啦。

function debugBase64(base64URL){  let win = window.open();  win.[xss_clean]('');  }

图片下载

还是基于浏览器的功能去操作的

function downloadImage(imgUrl) {  let a = $("").attr("href", imgUrl).attr("download", "img.png").appendTo("body");  a[0].click();  a.remove();  }

其中的imgUrl就是我们之前转好的码,也就是

let imgData = renderer.domElement.toDataURL("image/jpeg");/

这里的imgData。

完成啦

以上是"Three.js截图并下载的坑有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

图片 截图 内容 就是 篇文章 普通 场景 方案 标签 格式 还是 部分 页面 输出 明显 机变 不怎么 也就是 优点 元素 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国顶级网络安全公司有多少人 沭阳网络技术厂家价格 谈谈对数据库技术的发展的看法 广东云主机服务器服务商 ibm服务器硬盘槽位 首批双一流网络安全示范学院 软件开发也属于现代服务业吗 基带软件开发工程师前景 内部服务器端口映射访问不了 端口映射不符合网络安全 结婚报名网络安全培训 金川科技与工业互联网 网络技术与应用春考212分 嘉定区品牌人工智能应用软件开发 江苏数据软件开发过程品质保障 数据库路由器内存 当今网络技术趋势 大智慧数据库要钱吗 民族互联网科技公司创始人张健 怎么看数据库技术 普陀区正规软件开发价格表格 服务器老主板设置 无服务器计算 数据库分页top 在人民网网络技术部 电力系统开展网络安全排查 6g网络技术创世纪愿景 服务器mod自动更新 云备份服务器连接失败 使软件开发团队更具有机动性
0