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

最近需要将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-ignorecanvas: 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.mzph.cn/pingmian/43698.shtml

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

相关文章

jitsi 使用JWT验证用户身份

前言 Jitsi Meet是一个很棒的会议系统,但是默认他运行所有人创建会议,这样在某种程度上,我们会觉得他不安全,下面我们就来介绍下使用JWT来验证用户身份 方案 卸载旧的lua依赖性sudo apt-get purge lua5.1 liblua5.1-0 liblua5.1-dev luarocks添加ubuntu的依赖源,有则不需…

运维锅总详解设计模式

本首先简介23种设计模式,然后用Go语言实现这23种设计模式进行举例分析。希望对您理解这些设计模式有所帮助! 一、设计模式简介 设计模式是软件设计中用于解决常见设计问题的一套最佳实践。它们不是代码片段,而是解决特定问题的通用方案。设…

Xilinx 的aarch32 aarch64 armr5 编译器区别

对于 Xilinx 设备,特别是使用 Vivado 或 Vitis IDEs 开发的那些,针对不同 ARM 架构如 aarch32、aarch64 和 ARM R5,使用的编译器也会有所不同。以下是这些架构在 Xilinx 开发环境中常用的编译器: 1. AArch32 (ARM 32位) 对于 Xi…

给元素的margin-top/top设置百分比,是基于什么进行计算?

1、普通元素 margin-top:基于父元素的宽度计算 2、relative元素 margin-top:基于自身的宽度计算top:基于自身的宽度计算 3、absolute元素 margin-top:基于最近一级的非static元素的宽度计算top:基于最近一级的非s…

Apache AGE 安装部署

AGE概述 概述 我们可以通过源码安装、拉取docker镜像运行、直接使用公有云三种方式中的任意一种来使用Apache AGE 获取 AGE 发布版本 可以在 https://github.com/apache/age/releases 找到发布版本和发布说明。 源代码 源代码可以在 https://github.com/apache/age 找到…

PowerShell install 一键部署mysql 9.0.0

mysql 前言 MySQL 是一个基于 SQL(Structured Query Language)的数据库系统,SQL 是一种用于访问和管理数据库的标准语言。MySQL 以其高性能、稳定性和易用性而闻名,它被广泛应用于各种场景,包括: Web 应用程序:许多动态网站和内容管理系统(如 WordPress)使用 MySQL 存…

vite项目使用qiankun构建hash路由微前端

文章目录 前言一、主应用使用react18 react-router-dom61、项目安装2、主应用中注册微应用3、主应用中设置路由和挂载子应用的组件 二、创建react18 react-router-dom6子应用1、项目安装2、修改子应用 vite.config.ts3、修改子应用 main.tsx,区分qiankun环境和独立部署环境4、…

mybatis-plus中的方法的作用

在MyBatis-Plus中,这些方法是用于构建查询条件或排序条件的工具,它们大多属于com.baomidou.mybatisplus.core.conditions.query.QueryWrapper、UpdateWrapper或类似的包装器类中,用于构建复杂的SQL查询或更新语句。这些方法通过链式调用的方式…

【割点 C++BFS】2556. 二进制矩阵中翻转最多一次使路径不连通

本文涉及知识点 割点 图论知识汇总 CBFS算法 LeetCode2556. 二进制矩阵中翻转最多一次使路径不连通 给你一个下标从 0 开始的 m x n 二进制 矩阵 grid 。你可以从一个格子 (row, col) 移动到格子 (row 1, col) 或者 (row, col 1) ,前提是前往的格子值为 1 。如…

日志无界:Eureka中服务的分布式日志记录策略

日志无界:Eureka中服务的分布式日志记录策略 引言 在微服务架构中,服务的分布式日志记录对于监控、故障排查和安全审计至关重要。Eureka作为Netflix开源的服务发现框架,虽然本身不直接提供日志记录功能,但可以与其他日志记录工具…

AE常用工具

目录 图形工具(快捷键Q) 选取工具(快捷键V) 抓手工具(快捷键H或空格) 放缩工具(快捷键Z或滚动滑轮) 图形工具(快捷键Q) 按住alt并点击,可切换…

单目深度估计部署 rk3588

搞了一小段时间的单目深度估计,目标是在板端部署用起来,但由于基于开源数据或开源模型,将模型估计的相对深度转换成绝对深度误差非常大(或许是转换方法有问题),另一方面如何具体的在项目中用起来还没好的想…

huggingface登不进去?

HF-Mirror点这个镜像网站

二重积分 - 包括计算方法和可视化

二重积分 - 包括计算方法和可视化 flyfish 计算在矩形区域 R [ 0 , 1 ] [ 0 , 2 ] R [0, 1] \times [0, 2] R[0,1][0,2] 下,函数 z 8 x 6 y z 8x 6y z8x6y 的二重积分。这相当于计算曲面 z 8 x 6 y z 8x 6y z8x6y 与 xy 平面之间的体积。 二重积分…

【LeetCode】赎金信

目录 一、题目二、解法完整代码 一、题目 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使…

UMI HTTP接口手册

Translate to English 命令行手册: README_CLI.mdHTTP接口手册: README_HTTP.md HTTP接口手册 (本文档仅适用于 Umi-OCR 最新版本。旧版本请查看 Github备份分支 中对应版本的文档。) 基础说明 如上图,必须允许HTT…

MySQL篇五:基本查询

文章目录 前言1. Create1.1 单行数据 全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 练习 2.3 结果排序2.3.1 练习 …

Java内存区域与内存溢出异常(补充)

2.2.5 方法区 方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但是它却有一…

分布式事务Seata AT 详解

AT模式 一阶段: 向seata server端申请全局事务id,传递给下游参与服务 执行各个本地事务,在事务执行前后记录seata自己的undo log/imag (用于回滚)到表中,该表为根据官网手动创建 各个本地事务申请全局锁 申请成功提…

2024浙江外国语学院汉语桥线上项目 “在杭州,看见更好的中国”开班

7月9日上午,由教育部中外语言交流合作中心主办、浙江外国语学院国际商学院承办的2024汉语桥“在杭州,看见更好的中国”线上项目正式启动。项目负责人何骅老师及汉语桥教师团队,与来自越南、缅甸、日本、俄罗斯的100名学员相聚云端&#xff0c…