three-platformize 微信小程序 uniapp 使用截图功能

news2024/9/28 7:19:26

最近需要将3d场景进行截图,但是网上的各种各样,看的我一团乱麻,因此在解决完后就将这些简单的分享一下;

原理:将3维场景的那个canvas中的像素提取出来,找一个空的canvas二维画布放上去,然后用二维画布的那个进行截图

实际操作:

saveImage(){
			const [data, w, h] = screenshot(renderer, scene, camera, WebGLRenderTarget);
			const ctx = helperCanvas.getContext('2d')
			const imgData = helperCanvas.createImageData(data, w, h);
			helperCanvas.height = imgData.height;
			helperCanvas.width = imgData.width;
			ctx.putImageData(imgData, 0, 0);
			const imgDataFromCanvas = ctx.getImageData(0, 0, w, h)
			const hasPixel = imgDataFromCanvas.data.some(i => i !== 0)
			wx.canvasToTempFilePath({
				// @ts-ignore
				canvas: helperCanvas,
				success(res) {
					wx.previewImage({
						urls: [res.tempFilePath],
					})
				}
			})
		},

说一下代码部分

import { screenshot } from 'three-platformize/tools/screenshot'

import { WebGLRenderTarget } from 'three';

是直接从three-platformize中导入进来的

然后放入场景、相机、渲染器、以及一个WebGLRenderTarget

然后当执行saveImage这个方法时就能够将当前相机看到的变成一个图片临时保存,也就是那个res.tempFilePath,

然后就是我通过this. 的方式一直获取不到data中的方法,因此呢就把渲染器什么的都放入到了全局变量中

注意:代码是在uniapp vue3中使用的,微信小程序原生的当然也是可以用的了

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

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

相关文章

Conformal low power-1.概述

概述 设计师们越来越期望更长的电池寿命和更高的性能。由于漏电流的增加,使用90纳米及更小工艺节点制造的设备在不使用时的功耗与使用时相同。设计师们可以针对漏电流和动态功耗进行优化,这可以减少能源使用并降低冷却和封装成本。额外的高级低功耗方法…

oracle哪些后台进程不能杀?

oracle 有很多的后台进程,在遇到特殊情况的时候如锁表,如果等待的是一个后台进程,那这时就需要考量是不是能杀掉这个后台进程?杀掉这个后台进程会不会引起实例崩溃?本着实践出真知,本文针对oracle 11g&…

入门PHP就来我这(高级)20 ~ 事务处理

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享 路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。 接着上篇我们来看下PDO数据库的事务处理。 1 PDO中的事务处理 1.1 事务相关概念 事务&#…

基于cmake为项目自动获取git分支tag的版本号和commitid

目录 1. 引言2. 实现过程2.1 工程目录规划2.2 c程序文件2.3 CMakeLists.txt2.4 GitVersion.cmake文件2.5 BuildNumber.cmake文件1. 引言 在项目构建的时候,我们经常会希望能够将git提交的分支信息和提交号(commitid)以及当前版本发布的tag信息作为版本号自动构建到程序里面,以…

[C++]: 模板进阶

标题:[C]: 模板进阶 水墨不写bug 目录 一、非类型模板参数 (1)、非类型模板参数简介 (2)、非类型模板参数实例 二、模板的特化 (1)函数模板特化 (2)类…

微信文件太大传不了?学会这些,微信秒变大文件传输神器

在数字化时代,微信已成为我们日常沟通的重要桥梁。然而,当需要在微信上传输大文件时,文件大小的限制往往让人束手无策。 今天,我们将分享一些实用的技巧,帮助你在微信上轻松传输大文件,无论是工作文档还是…

防火墙组网

一、实验拓扑图 二、实验要求 1、DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问, 生产区的设备全天可以访问。 2、生产区不允许访问互联网,办公区和游客区允许访问互联网。 3、办…

无人机之飞行规划与管理篇

无人机飞行规划与管理是确保无人机安全、高效且符合法规的运行的关键步骤。这一过程包括了对飞行任务的详细安排、航线的设定以及风险的评估和管理。下面简述这一过程的主要环节: 一、飞行目的和任务确定 在规划之初,必须明确无人机的飞行目的&#xf…

ES13的4个改革性新特性

1、类字段声明 在 ES13 之前,类字段只能在构造函数中声明, ES13 消除了这个限制 // 之前 class Car {constructor() {this.color = blue;this.age = 2

表格数据存本地,实时保存

需求:填写表格时,每填写一个就要保存 将表格数据以json对象的格式存在本地,刷新时在created或者mounted将数据取出,点击保存时将存的数据清除,但是如果不点击保存,直接填写下一个数据,之前填写…

【java算法专场】双指针(下)

611. 有效三角形的个数 目录 611. 有效三角形的个数 算法思路 算法代码 LCR 179. 查找总价格为目标值的两个商品 算法思路 算法代码 HashSet 双指针 15. 三数之和 算法思路 算法代码 18. 四数之和 ​编辑算法思路 算法代码 611. 有效三角形的个数 算法思路 算法…

echarts无法加载Map地图的问题

项目场景: echarts无法加载Map地图的问题 详情 查阅相关资料讲,echarts4.9以上版本已经移除了map,那么我们就得重新打包echarts文件了。打包echarts.min.js的链接:https://echarts.apache.org/zh/builder.html 在这个链接页面可…

CTFShow的36D杯

神光 还是想了一下,但那个异或搞不出来,都是对dword_41A038操作,想起开头就给了 key ,还有反调试应该是要调试的 输出的应该就是 flag ,只是为什么是乱码呢? 放 od 再试试,直接就出 flag 了&am…

对比:9款最佳个人项目管理软件盘点

文章介绍了9款个人项目管理软件:PingCode、Worktile、Flowus、Todoist、Trello、Teambition、有道云笔记、Notion、Microsoft To Do。 在管理个人项目时,是否常感到信息零散、进度难以把控?选择合适的项目管理软件,可以有效解决这…

关于解决双屏幕鼠标移动方向问题

1.点开设置》系统》屏幕 2.分清屏幕标识,一般笔记本为1 3.点击要移动的屏幕,然后按住鼠标左键不方进行移动 感谢您的浏览,希望可以帮到您!

【探索Linux】P.38(传输层 —— TCP协议通信连接管理机制简介 | TCP连接状态转换)

阅读导航 引言一、TCP协议通信连接管理机制二、连接状态转换1. TCP状态转换图2. 状态转换过程3. 理解TIME_WAIT状态(1)目的和作用(2)状态转换(3)特殊情况(4)影响和优化 4. 理解 CLOS…

医疗器械的售后与服务探讨

彩虹医械维修培训 8月长期班报名啦 学技术 考证书 技术支持 大型医疗设备的宕机不仅会造成医疗机构直接的巨额经济损失,宕机期间的损失甚至可以超过维修费用,而且还可能会耽误患者的病情检查,因此对医疗设备的定期保养已经成为各级医院的…

学生选课管理系统(Java+MySQL)

技术栈 Java: 用于实现系统的核心业务逻辑。MySQL: 作为关系型数据库,用于存储系统中的数据。JDBC: 用于Java程序与MySQL数据库之间的连接和交互。Swing GUI: 用于创建图形用户界面,提升用户体验。 系统功能 我们的学生选课管理系统主要针对学生和管理…

SQL中on和where的区别

SQL中on和where的区别   前言,在工作写SQL使用中,在涉及到多个表的关联时,既可以通过on进行数据过滤,又可以使用where进行数据过滤, 确实有点不太了解这两个关键字在left join后的区别,所以就去查了些资…

从产业链视角审视工作

从产业链视角审视工作:定位、价值与成长 作为一名技术博客博主,我经常收到各种关于职业发展、技术成长和学习路径的问题。最近,我看了一份学习报告,其中提到了一种非常有趣且实用的视角——从产业链的角度去审视自己的工作。这种视…