Unity中截图只渲染有像素的区域,并且压缩保存到本地
来源:互联网 发布:淘宝号封了会怎么样 编辑:程序博客网 时间:2024/06/11 13:54
需求如标题,话不多说,上代码。
void Start() { cam = gameObject.GetComponent<Camera>(); ScreenHeight = 1024; ScreenWidth = 1024; } public void StartGetCapture() { CaptureCamera(cam, rect); } Texture2D CaptureCamera(Camera camera) { // 创建一个RenderTexture对象 RenderTexture rt = new RenderTexture(ScreenWidth, ScreenHeight, 1); // 设置相关相机的targetTexture为rt, 并手动渲染相机 camera.targetTexture = rt; camera.Render(); // 激活这个rt, 并从中中读取像素。 RenderTexture.active = rt; Texture2D screenShot = new Texture2D(ScreenWidth, ScreenHeight, TextureFormat.ARGB32, false);//TextureFormat设置成ARGB32,只渲染有像素的区域。 float vx = (v1.x > v2.x) ? v2.x : v1.x; //取较小的x,y作为起始点 float vy = (v1.y > v2.y) ? v2.y : v1.y; screenShot.ReadPixels(new Rect(0, 0, 1024, 1024), 0, 0, false);//读取像素 screenShot.Apply(); // 重置相关参数,让camera继续在屏幕上显示 camera.targetTexture = null; RenderTexture.active = null; // JC: added to avoid errors GameObject.Destroy(rt); //压缩纹理的尺寸 int targetWidth = (int)(ScreenWidth*0.5f);//压缩的比率 int targetHeight =(int)(ScreenHeight*0.5f);//压缩的比率 Texture2D result = new Texture2D(targetWidth, targetHeight, screenShot.format, false); float incX = (1.0f / (float)targetWidth); float incY = (1.0f / (float)targetHeight); for (int i = 0; i < result.height; ++i) { for (int j = 0; j < result.width; ++j) { Color newColor = screenShot.GetPixelBilinear((float)j / (float)result.width, (float)i / (float)result.height); result.SetPixel(j, i, newColor); } } result.Apply(); // 最后将这些纹理数据,保存到一个png图片文件 byte[] bytes = result.EncodeToPNG(); string filename = Application.dataPath + "/Screenshot.png"; System.IO.File.WriteAllBytes(filename, bytes); return screenShot; }
0 0
- Unity中截图只渲染有像素的区域,并且压缩保存到本地
- bitmap压缩后保存到本地(只压缩质量,不压缩像素)
- Android压缩图片并且保存到本地内存卡中
- unity从服务器下载资源并且保存到本地
- unity从服务器下载资源并且保存到本地
- webView截图保存到本地
- 【Unity】Unity中通过纹理截屏将图片保存到本地
- Unity3D中截图并修改图片像素重新保存至本地
- 如何将OpenGL渲染的图片保存到本地(正常渲染和离屏渲染)
- android仿银行客户签名并且保存签名的截图文件,文件名为本地时间
- Unity iOS保存截图到iOS相册
- Java实现截图并保存到本地
- quick cocos2dx截图保存到本地
- java实现截图并保存到本地
- Unity高像素截图
- VB.NET屏幕指定区域截图代码,保存到Image中
- C#实现定时全屏截图并且保存到预先设定好的文件夹中的代码示例
- C#实现定时全屏截图并且保存到预先设定好的文件夹中的代码示例
- http协议详解
- 数据库迁移之从oracle 到 MySQL
- 【Unity入门】编辑器常用视图(转)
- thinkphp 5.0 简明笔记
- zookeeper编程(二)
- Unity中截图只渲染有像素的区域,并且压缩保存到本地
- stm32f207zg uart1配置
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- UNIX环境高级编程第三版源码编译
- Maple 笔记1
- AIDL 编译报can be an out parameter, so you must declare it as in, out or inout原因探究
- 需要跟进的内容
- Java 中得到异常信息
- 欢迎使用CSDN-markdown编辑器