Unity Android端截图保存并获取展示
截屏保存方法
public static IEnumerator ScreenShot(string filePath, string fileName){yield return new WaitForEndOfFrame();Rect rect = new Rect(0, 0, Screen.width, Screen.height);Texture2D screenShot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);screenShot.ReadPixels(rect, 0, 0);screenShot.Apply();byte[] bytes = screenShot.EncodeToPNG();if (!Directory.Exists(filePath))Directory.CreateDirectory(filePath);File.WriteAllBytes(filePath + "/" + fileName + ".png", bytes);
#if UNITY_EDITORAssetDatabase.SaveAssets();AssetDatabase.Refresh();
#endif}
以日期为名称调用
public void TakeAScreenShot() {string englishTime = DateTime.Now.ToString(); //2000/9/27 1:27:28string chineseTime = string.Empty;string[] split1 = englishTime.Split('/'); //2000 - 9 - 27 1:27:28string[] split2 = split1[2].Split(' '); //27 - 1:27:28string[] split3 = split2[1].Split(':'); //1 - 27 - 28chineseTime += split1[0] + "年" + split1[1] + "月" + split2[0] + "日" + split3[0] + "时" + split3[1] + "分" + split3[2] + "秒"; StartCoroutine(UnityHelper.ScreenShot(UIPanel_ScreenShot.M_Path, chineseTime, false));}
获取截图
private List<Texture2D> m_ScreenShotTextures;private void GetFilesInFolder(string folderPath){if (Directory.Exists(folderPath)){string[] currentFiles = Directory.GetFiles(folderPath);if (currentFiles.Length > 0){m_ScreenShotTextures = new List<Texture2D>();foreach (string filePath in currentFiles){
#if UNITY_EDITORif (filePath.EndsWith("png"))
#endifm_ScreenShotTextures.Add(ReadTexture(filePath));}m_ScreenShotTextures.Reverse();}}SetScreenShot();}private Texture2D ReadTexture(string filePath){Texture2D pathTex = new Texture2D(Screen.width, Screen.height);
#if UNITY_EDITORstring[] split1 = filePath.Split("\\"); //...... - ***.png
#elif UNITY_ANDROIDstring[] split1 = filePath.Split("/"); //...... - ***.png
#endifstring[] split2 = split1[split1.Length - 1].Split("."); // *** - pngpathTex.name = split2[0];byte[] bytes = File.ReadAllBytes(filePath);pathTex.LoadImage(bytes);pathTex.Apply();return pathTex;}
展示:把上面获取的结果进行展示即可
相关文章:
Unity Android端截图保存并获取展示
截屏保存方法 public static IEnumerator ScreenShot(string filePath, string fileName){yield return new WaitForEndOfFrame();Rect rect new Rect(0, 0, Screen.width, Screen.height);Texture2D screenShot new Texture2D(Screen.width, Screen.height, TextureFormat.R…...
linux高级编程——文件IO
linux高级编程——文件IO 标准IO:stdio.h 标准IO:stdio.h IO也就是输入input和输出output; I: 键盘是标准输入设备,默认输入就是指键盘 /dev/input; O: 显示器是标准输出设备,默认输…...
windows C++-在 C++/WinRT 中使用委托处理事件(下)
撤销已注册的委托 当你注册委托时,通常会向你返回一个令牌。 随后,可以使用该令牌撤销委托;这意味着将从事件取消注册委托,再次引发该事件时不会调用该委托。 为简单起见,上面的代码示例都没有介绍如何执行该操作。 …...
【实用工具】Stirling-PDF: 优质开源的PDF处理工具/编辑工具-含入门安装教程
文章目录 项目简介功能展示Page Operations 页面操作Conversion Operations 转换操作Security & Permissions 安全与权限Other Operations 其他业务 如何安装并使用Docker RunDocker Compose 项目简介 这是一款使用 Docker 的基于本地托管网络的强大 PDF 操作工具。它能让…...
opencv 深度图视差图可视化案例
参考:https://www.cnblogs.com/zyly/p/9373991.html(图片这里面下载的) https://blog.csdn.net/He3he3he/article/details/101053457 原理 双目摄像头 视差公式: 三角形对应推算 深度距离转换: 这里d是视差Disparity 代码 下面两种计算视差方法: import os impor…...
Golang | Leetcode Golang题解之第330题按要求补齐数组
题目: 题解: func minPatches(nums []int, n int) (patches int) {for i, x : 0, 1; x < n; {if i < len(nums) && nums[i] < x {x nums[i]i} else {x * 2patches}}return }...
算法训练(leetcode)第五十二天 | Bellman_ford 队列优化算法(SPFA)、BF算法判断负回路、BF之单源有限最短路(有负回路)
刷题记录 94. 城市间货物运输 I-Bellman_ford 队列优化算法(SPFA)95. 城市间货物运输 II-BF算法判断负回路96. 城市间货物运输 III-BF之单源有限最短路(有负回路) 94. 城市间货物运输 I-Bellman_ford 队列优化算法(SPFA) 题目地址…...
SpringBoot中整合RabbitMQ(测试+部署上线 最完整)
一、RabbitMQ安装 由于在测试环境中,我们现在虚拟机上基于docker安装mq docker run \-e RABBITMQ_DEFAULT_USERquick \-e RABBITMQ_DEFAULT_PASS123 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network your-net\-d \r…...
算法板子:线性DP——算出三角形中的最大路径值、求最长上升子序列、求最长公共子序列
目录 一、数字三角形——算出三角形中的最大路径值 二、最长上升子序列——求一个数组中的最长递增子序列 三、最长公共子序列——求两个字符串中的最长公共子序列 一、数字三角形——算出三角形中的最大路径值 #include <iostream> using namespace std;const int N …...
【C++】值传递
函数值传递的特点:值传递过程中即使形参改变也不会改变实参 没有返回值的函数用“ void ”定义 下面是一个实例: #include<iostream> using namespace std;//值传递 //定义函数,实现两个数字进行交换函数//如果函数不需要返回值&…...
工业三防平板助力MES系统打造工厂移动式生产管理
随着工业4.0时代的到来,智能制造、数字化车间等概念层出不穷,生产过程的可视化管理也成为了企业提升效率、优化生产的关键。而工业三防平板,凭借其坚固耐用、功能强大、便携易用等特性,成为了实现生产过程可视化管理的重要利器&am…...
keepalived+nginx实现的简单高可用故障转移
keepalived和nginx和适配 nginx服务停止后对keepalived的影响最近研究了一下keepalived绑定虚拟Ip,然后实现集群的方案,发现实现故障转移的模式,只有在keepalived服务整个挂掉后才能实现虚拟IP的漂移,和实际应用的场景不怎么适配,所以把它和nginx结合在一起实现集群高可用…...
openai api使用
1OpenAI 的 API 介绍 1.1 api分类 常用的 OpenAI Api 接口总共分为 4 类:对话类、私有化模型训练类、通用类、图片 & 音频类,其中对话类与私有化模型训练类是最常用的。 a .对话类 这类是最常用也是最核心的接口,用于人机对话。对话类…...
带你走进haproxy的世界
华子目录 前言什么是负载均衡为什么用haproxy负载均衡负载均衡公司负载均衡类型四层负载均衡七层负载均衡四层和七层的区别 haproxy介绍haproxy的安装与服务信息软件安装haproxy基本配置信息proxies配置socat工具 haproxy算法静态算法动态算法其他算法 高级功能及配置基于cooki…...
STM32--中断使用(超详细!)
STM32中断机制是嵌入式系统设计中一个非常重要的组成部分,它允许单片机在执行程序的过程中,对外部或内部发生的事件做出快速响应。以下是一篇关于STM32中断机制的详细介绍和示例代码,希望能够帮助你更好地理解和应用中断。 一、中断的基本概…...
【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践
本文介绍一个去雾算法ChaIR的使用方法,可以完成图像去雾,也可以用于图像去雨、去噪音等任务。本文不涉及论文原理,只包含源代码的跑通和使用。 先展示一下效果: 原图去雾 论文:Exploring the potential of channel …...
《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
Title 题目 Screening Outcomes of Mammography with AI in Dense Breasts: A Comparative Study with Supplemental Screening US 《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》 Background 背景 Comparative performance between…...
crm 销售管理系统有哪些?国内外排名前十盘点
本文深入对比的 crm销售管理系统有:1.纷享销客; 2.Zoho CRM; 3.销售易; 4.有赞CRM; 5.Salesforce; 6.HubSpot; 7.简道云CRM; 8.爱客CRM; 9.Apptivo。 如果你正寻找一种方…...
package-lock.json 要提交到git吗?
之前一直没有提交package-lock.json文件到git仓库,直到我打包失败了。。。 我才知道package-lock.json需要提交到git仓库。 npm官网建议将package-lock.json一起提交到代码库中,不要忽略它。 package-lock.json的主要作用是锁定dependencies的版…...
算法学习day32
一、解码方法II(解码方法I的升级版) 在I的基础上增加了*,可以代替1-9中任意一个数字,求解码的方法有多少种 输入:s "*" 输出:9 解释:这一条编码消息可以表示 "1"、"…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
