首页 > 编程语言 > 详细

Unity中指定相机截屏,并将图片转为Base64

时间:2020-04-10 19:23:12      阅读:123      评论:0      收藏:0      [点我收藏+]

问题背景:

需求就是只截场景,不包含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由于以上优点被广泛应用于计算机的各个领域,(百科)

 

截图实例:技术分享图片

 

Unity中指定相机截屏,并将图片转为Base64

原文:https://www.cnblogs.com/answer-yj/p/12675192.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!