Unity中指定相机截屏,并将图片转为Base64
问题背景:
需求就是只截场景,不包含UI,并将截图保存为Base64格式给到Web展示。
方案:
指定相机截图:
1 /// <summary>
2 /// 指定相机截屏
3 /// </summary>
4 /// <param name="camera"></param>
5 /// <param name="rect"></param>
6 /// <returns></returns>
7 public byte[] CaptureScreen(Camera camera, Rect rect)
8 {
9 RenderTexture rt = new RenderTexture(camera.pixelWidth, camera.pixelHeight, 0);
10
11 camera.targetTexture = rt;
12 camera.Render();
13
14 RenderTexture.active = rt;
15 Texture2D screenShot = new Texture2D(camera.pixelWidth, camera.pixelHeight, TextureFormat.RGBA32, false);
16
17 screenShot.ReadPixels(rect, 0, 0);
18 screenShot.Apply();
19
20 camera.targetTexture = null;
21 RenderTexture.active = null;
22 GameObject.Destroy(rt);
23
24 byte[] bytes = screenShot.EncodeToPNG();
25
26 return bytes;
27 }
这里我没写到内存,因为我不需要,我这是直接传上去。
转Base64很简单:
1 /// <summary>
2 /// 图片流转Base64
3 /// </summary>
4 /// <param name="bytesArr"></param>
5 /// <returns></returns>
6 public String Texture2DToBase64(byte[] bytesArr)
7 {
8 string strbaser64 = Convert.ToBase64String(bytesArr);
9
10 return strbaser64;
11 }
Base64:
网络上最常见的用于传输8Bit字节码的编码方式之一,Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。Base64由于以上优点被广泛应用于计算机的各个领域,(百科)
截图实例:
最新问题:前端解码Base64图片乱码问题
首先乱码有两点问题造成的:
1.图片过大
2.编码格式
我先对图片进行压缩,并且格式转为jpg,发现不好使。所以锁定原因在编码格式,转utf-8后可以了
1 /// <summary>
2 /// 图片流转Base64并设置编码格式
3 /// </summary>
4 /// <param name="bytesArr"></param>
5 /// <returns></returns>
6 private string Texture2DToBase64(byte[] bytesArr)
7 {
8
9 string strbaser64 = Convert.ToBase64String(bytesArr);
10
11 byte[] bytes = Encoding.UTF8.GetBytes(strbaser64);
12 string utf8String = Encoding.UTF8.GetString(bytes);
13
14 return utf8String;
15 }
Unity中指定相机截屏,并将图片转为Base64的更多相关文章
- Unity通过指定摄像机截屏
简介 介于照抄网上之前的截图教程,然后在实际应用过程中出现了一些小小的问题,修正了一下下,特此分享一下 PS:代码在后面 原理 原理很简单,就是将一个相机的内容渲染到一个贴图上,然后将贴图保存为图片 ...
- unity中编辑器直接截屏代码
using UnityEngine; using System.Collections; using System.Windows.Forms; public class screenshots : ...
- 纯C#实现屏幕指定区域截屏
以前在别的地方见过一个通过调用系统API实现屏幕截图的例子,从内心来说我不太喜欢在C#代码中出现这种情况,现在什么都讲“和谐”,我觉得这种做法就是破坏了我们的“和谐”代码,呵呵,开玩笑,有的时候,不通 ...
- iOS中正确的截屏姿势
昨天写了个用到截屏功能的插件,结果问题不断,今天终于解决好了,把debug过程中所有尝试过的截屏方法都贴出来吧- 第一种 这是iOS 3时代开始就被使用的方法,它被废止于iOS 7.iOS的私有方法, ...
- C#实现屏幕指定区域截屏
//string Opath = @"C:/Picture"; //if (Opath.Substring(Opath.Length - 1, 1) != @ ...
- javascript实现当前页面截屏
javascript实现当前页面截屏 一.前言 有客户要求能对用户当前页面进行指定区域截屏,类似qq截屏的实现效果.比如用户在处理工作的时候,将当前页面录入后的一些信息进行截图下载保存.但又不能安装任 ...
- robotFramework——截屏
测试执行过程中进行截屏并且保存,是任何一款自动化测试工具或者框架必备的功能.那么Robotframework如何进行截屏呢?Robotframework提供了一个“Screenshot”库. 使 ...
- Selenium截屏 图片未加载的问题解决--【懒加载】
需求: 截屏后转PDF. 问题: selenium截屏后,图片未加载 如下图: 原因: 网站使用了懒加载技术:只有在浏览器中纵向滚动条滚动到指定的位置时,页面的元素才会被动态加载. 什么是图片懒加载? ...
- C#截屏
本实例代码实现了WinForm截屏保存为图片,亲测可行. 界面截图: 下载:http://hovertree.com/h/bjaf/scjyuanma.htm 以下代码可以实际运行,在项目HoverT ...
- 使用laravel框架与phantomjs实现截屏功能
在网上看到的关于phantomjs实现截屏功能很多都是与node结合在一起使用,并需要输入命令才能执行.因此我想要实现输入网址即可截屏并输出图片的功能.示例:http://120.77.171.182 ...
随机推荐
- 超级简单实用的CSS3动画,增添网页效果
有时候做网页,如果都写成静态的没有动态效果,犹如一张张图片,没有视觉感受,没有达到很好的视觉效果. 其实一些简单的CSS3动画,可以增添网页的动态感,使自己设计的网页更有视觉享受.1.图片有一定角度的 ...
- kubernetes运行应用Controller3之Job、CronJob详解
成功启动一个Job 1.Job.spec.template.metadata,没有空格符的错误 [machangwei@mcwk8s-master ~]$ cat mcwJob1.yml apiVer ...
- windows下IPv6组播(C++、MFC)
Server #include <stdio.h> #include <Ws2tcpip.h> #include <winsock2.h> #pragma comm ...
- Canny边缘检测实现(Opencv C++)
Canny边缘检测是Canny在1986年提出来的,目前仍是图像边缘检测算法中最经典.先进的算法之一.canny方法基于如下三个基本目标: 1. 低错误率:所有边缘都应被找到,并且不应有虚假响应. 2 ...
- (C#) IIS 响应标头过滤敏感信息(如:Server/X-Powered-By等) 运维知识
背景: 再一次净网行动中,客户要求安全改造发现了接口请求的header标头中出现如图中的敏感信息. 说明: 其意义在于告知浏网站是用什么语言或者框架编写的.解决办法就是修改该响应头为一个错误的值,将攻 ...
- 阿里bxet逆向
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 x82y 分析过 ...
- 改变函数中的this指向
// 改变函数的this指向 // 先记住一句话 : 箭头函数不能改变this指向 // 语法1: call() 方法 // 在调用函 ...
- 算法学习笔记(13): Manacher算法
Manacher算法 形象的被译为马拉车算法 这个算法用于处理简单的回文字符串的问题.可以在 \(O(n)\) 的复杂度内处理出每一个位置为中心的回文串的最长长度. 为了避免出现偶数长度的回文串,导致 ...
- kettle从入门到精通 第六十六课 ETL之kettle kettle阻塞教程,轻松获取最后一行数据,so easy
场景:ETL沟通交流群内有小伙伴反馈,如何在同步一批数据完成之后记录下同步结果呢?或者是调用后续步骤.存储过程.三方接口等. 解决:使用步骤Blocking step进行阻塞处理即可. 1.下面的de ...
- Easysearch 容量规划建议
基于容量估算 主要问题: 每天将索引多少原始数据(GB)?保留数据多少天? 原始数据膨胀率 您将强制执行多少个副本分片? 您将为每个数据节点分配多少内存? 您的内存:数据比例是多少? 原则 保留 +1 ...