对相机所看的视角截屏保存为图片

对相机所看的视角截屏保存为图片:

 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEngine.UI;
 4 /// <summary>
 5 /// 对相机截图
 6 /// </summary>
 7 public class Jietu : MonoBehaviour {
 8
 9     public Camera camera;
10     Texture2D tex;
11     void Start()
12     {
13             tex= CaptureCamera(camera,new Rect(0,0,Screen.width,Screen.height));
14             GameObject.Find("Canvas/Image").GetComponent<Image>().sprite=Sprite.Create(tex, new Rect(0, 0,tex.width,tex.height), new Vector2(0.5f, 0.5f));
15     }
16     Texture2D CaptureCamera(Camera cam,Rect rect)
17     {
18         //创建一个RenderTexture对象
19         RenderTexture rt=new RenderTexture ((int)rect.width,(int)rect.height,0);
20         //临时设置相关相机的targetTexture为rt,并手动渲染相关相机
21         cam.targetTexture=rt;
22         cam.Render();
23         //ps: --- 如果这样加上第二个相机,可以实现只截图某几个指定的相机一起看到的图像。
24         //ps: camera2.targetTexture = rt;
25         //ps: camera2.Render();
26         //ps: -------------------------------------------------------------------
27
28         // 激活这个rt, 并从中中读取像素。
29         RenderTexture.active = rt;
30         Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24,false);
31         screenShot.ReadPixels(rect, 0, 0);// 注:这个时候,它是从RenderTexture.active中读取像素
32         screenShot.Apply();
33
34         // 重置相关参数,以使用camera继续在屏幕上显示
35         camera.targetTexture = null;
36         //ps: camera2.targetTexture = null;
37         RenderTexture.active = null; // JC: added to avoid errors
38         GameObject.Destroy(rt);
39         // 最后将这些纹理数据,成一个png图片文件
40         byte[] bytes = screenShot.EncodeToPNG();
41         string filename = Application.dataPath + "/Screenshot.png";
42         System.IO.File.WriteAllBytes(filename, bytes);
43         Debug.Log(string.Format("截了一张照片: {0}", filename));
44         return screenShot;
45     }
46 }

转载一下,以备后用。

时间: 2024-11-01 03:36:55

对相机所看的视角截屏保存为图片的相关文章

android截屏:保存一个view的内容为图片并存放到SD卡

项目中偶尔会用到截屏分享,于是就有了下面这个截屏的方法~ 下面得saveImage()方法就是保存当前Activity对应的屏幕所有内容的截屏保存. private void saveImage() { // SD卡保存路径 String savePath = Environment.getExternalStorageDirectory() + "/temp.png"; // showProgress("请稍候", "正在保存图片--"); s

iOS截屏保存至相册

#pragma mark 截屏并保存至相册 -(void)screenShotsComplete:(void(^)(UIImage * img)) complete { CGSize imageSize = [[UIScreen mainScreen] bounds].size; UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0); CGContextRef context = UIGraphicsGetCurrentContext(

Python3.4 截屏并将图片发至邮箱

from PIL import ImageGrab import ctypes import time from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage import smtplib import os whnd = ctypes.windll.kernel32.GetConsoleWindow() i

directx截屏保存bmp文件

#include <d3d9.h> #include <D3dx9tex.h> #pragma comment(lib, "D3D9.lib") #pragma comment(lib, "D3dx9.lib") #ifndef SAFE_RELEASE #define SAFE_RELEASE(p) if(p){p->Release();p = NULL;} #endif int main(int argc,char *argv[])

C#截屏

本实例代码实现了WinForm截屏保存为图片,亲测可行. 界面截图: 下载:http://hovertree.com/h/bjaf/scjyuanma.htm 以下代码可以实际运行,在项目HoverTreeCSJ中运行成功. /* 何问起 http://hovertree.com/hovertreescj/ */ using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using Sys

Snipaste强大离线/在线截屏软件的下载、安装和使用

步骤一: https://zh.snipaste.com/  ,去此官网下载. 步骤二:由于此是个绿色软件,直接解压即可. 步骤三:使用,见官网.ttps://zh.snipaste.com  按F1开始截屏 感谢下面哥的精彩微信文章 http://mp.weixin.qq.com/s?__biz=MzIwNzYwODYwMw==&mid=2247483903&idx=1&sn=02121fe920320bbe7b2fae012a18e70a&chksm=970e8f8ba

winform截屏

引自 http://www.cnblogs.com/aland-liu/archive/2011/07/20/Winform.html 已经注册博客好久,一直由于工作原因没有打理.今天在网上看了一个截屏的方法思想,感觉不错.就按照这个思路和网友的代码进行整理编写了一个小工具.第一次发博客不足之处,还请高手们批评指正. 废话就不多说放了,代码如下: 截取全屏代码: try { this.Hide(); Rectangle bounds = Screen.GetBounds(Screen.GetBo

项目总结之截屏细节考虑

DionysosLai([email protected]) 2014/12/22 2014项目总算告一段落,这个产品顺顺利利从开始到最后的上市,圆满成功.借着项目总结,回顾自己做的几个游戏,将一些细节问题归纳.第一篇,就以目前正在做的的新游戏<圣诞节>开篇,讲讲游戏截屏问题. 对于截屏,本身技术,并不是很复杂,一般有两种方法,一种是使用Opengl像素取点方式:另一种是使用RenderTexture纹理方法,详细内容,可以参考,之前写的一篇文章:http://blog.csdn.net/di

Python写一个像QQ可快捷键唤起区域截屏的应用

1.截屏应用功能拆解 先把要实现哪些功能罗列一下,功能拆解好了,程序设计时就比较清晰. 1).首先要能响应快捷键调起截屏程序,像QQ使用Ctrl+shift+B可以截屏一样: 2).然后就是截图功能,可以用鼠标选取截取的区域: 3).最后是要把截屏保存为本地图片. 2.做一下技术调研 功能拆解出来了,就开始调查下实现难度,有没有现成的第三方库可用,Python是出了名的库多,多找一找总会找到的. 搜寻了一下Python有截图功能的库,基本都是全屏截图和程序输入坐标来区域截图,没办法用鼠标选择可视