一、固定区域截屏:

Unity三种截屏方法

二、自由截图

using System.Collections;
using UnityEngine;///挂在摄像机上
///如果要截图UI,需将Canvas的RenderMode设置为Screen Space-Camera,并将Render Camera设置为挂该脚本的摄像机public class Capture : MonoBehaviour {public Color rColor = Color.green;//截图框颜色public Vector3 start = Vector3.zero;//开始位置public Vector3 end = Vector3.zero;//结束位置public Material rMat = null;//截图框材质,shader为"UI/Default"即可public bool drawFlag = false;//是否开始截图private Rect rect;//截图区域private Texture2D cutImage;//图片byte[] bytes;//图片bytevoid Update(){//按下鼠标左键开始截图if (Input.GetMouseButtonDown(0) && SecondPageManager._instance. ToCapture){SecondPageManager._instance.CapturePanel.SetActive(false);drawFlag = true;start = Input.mousePosition;}//抬起鼠标左键结束截图if (Input.GetMouseButtonUp(0) && SecondPageManager._instance.ToCapture && drawFlag){SecondPageManager._instance.ToCapture = false;drawFlag = false;StartCoroutine(CutImage());}//点击鼠标右键取消截图if (Input.GetMouseButtonDown(1) && SecondPageManager._instance.ToCapture){SecondPageManager._instance.CapturePanel.transform.parent.gameObject.SetActive(false);SecondPageManager._instance.CapturePanel.SetActive(false);SecondPageManager._instance.ToCapture = false;drawFlag = false;}}//绘制框选  void OnPostRender(){ if (drawFlag){end = Input.mousePosition;//鼠标当前位置  GL.PushMatrix();//保存摄像机变换矩阵  if (!rMat)return;rMat.SetPass(0);GL.LoadPixelMatrix();//设置用屏幕坐标绘图  GL.Begin(GL.QUADS);GL.Color(new Color(rColor.r, rColor.g, rColor.b, 0.2f));//设置颜色和透明度,方框内部透明  GL.Vertex3(start.x, start.y, 0);GL.Vertex3(end.x, start.y, 0);GL.Vertex3(end.x, end.y, 0);GL.Vertex3(start.x, end.y, 0);GL.End();GL.Begin(GL.LINES);GL.Color(rColor);//设置方框的边框颜色 边框不透明  GL.Vertex3(start.x, start.y, 0);GL.Vertex3(end.x, start.y, 0);GL.Vertex3(end.x, start.y, 0);GL.Vertex3(end.x, end.y, 0);GL.Vertex3(end.x, end.y, 0);GL.Vertex3(start.x, end.y, 0);GL.Vertex3(start.x, end.y, 0);GL.Vertex3(start.x, start.y, 0);GL.End();GL.PopMatrix();//恢复摄像机投影矩阵  }}IEnumerator CutImage(){string date = System.DateTime.Now.ToString("yyyyMMddHHmmss");//图片大小    if (end.x > start.x&& start.y > end.y){cutImage = new Texture2D((int)(end.x - start.x), (int)(start.y - end.y), TextureFormat.RGB24, true);//坐标左下角为(0,0)点rect = new Rect((int)start.x,Screen.height - (int)(Screen.height - end.y), (int)(end.x - start.x),(int)(start.y - end.y));yield return new WaitForEndOfFrame();cutImage.ReadPixels(rect, 0, 0, false);cutImage.Apply();yield return cutImage;bytes = cutImage.EncodeToPNG();//保存截图    //File.WriteAllBytes("D:/CutImage" + date + ".png", bytes);//公式识别StartCoroutine(FormulaRecognize._instance.OCRIdentify(bytes));}else{StartCoroutine(FormulaRecognize._instance.OCRIdentify(null));Debug.Log("请按照左上角到右下角的方式截图"); }}
}

    

Unity | 部分区域自由截图相关推荐

  1. ubuntu系统下怎么对任意区域的截图

    ubuntu系统下怎么对任意区域的截图 1.截取全屏快捷键:PrintScreen 2.截取当前窗口快捷键:Alt+PrintScreen 3.截取随意区域屏幕快捷键 这个需要自己添加快捷键 设置-键 ...

  2. Android Studio 基础 之 截图,指定截图区域动态截图

    Android Studio 基础 之 截图,指定截图区域动态截图 目录 Android Studio 基础 之 截图,指定截图区域动态截图 一.简单介绍 二.实现原理 三.注意事项 四.预览效果 五 ...

  3. 自由截图、提取、翻译图中文字——搜狗浏览器之截图扩展

    搜狗浏览器是本人使用的主力浏览器,其界面简洁时尚,可以带来秒开网页的超快体验,支持安装扩展,扩充浏览器的功能.本文介绍搜狗浏览器的截图扩展的功能和用法. 截图扩展由搜狗浏览器团队开发,具有以下功能: ...

  4. vue实现指定区域自由拖拽、打印功能

    先看下效果图,实现指定区域内内容自由拖拽,不超出.动态设置字体颜色及字号:设置完成实现打印指定区域内容,样式不丢失. 1.运行命令npm i vue-draggable-resizable -S, 安 ...

  5. Unity 第三人称自由视角

    环绕相机控制脚本 该脚本需要挂载在环绕相机上,而环绕相机不绑定在角色身上,而是作为一个单独的存在 此外,由于一般来说,角色的原点都在脚底,所以需要特别在角色的中心位置放置一个空对象作为视野中心,并在面 ...

  6. Unity摄像机画面制作全景图片|截图制作全景图

    Unity摄像机画面制作全景图片 目录 效果展示 Unity编辑器中使用脚本部分 Unity编辑器中使用方法 Unity动态存储图片脚本部分 Unity动态存储图片使用方法 目录 你好! 这是你第一次 ...

  7. PyQt+Opencv-python多线程显示摄像头信息至QLabel,摄像头显示区域自由拉伸尺寸

    文章目录 前言 效果 资源下载 核心代码 编程思路 Camera.py Widget.py 前言   通过PyQt与Opencv-python实现多线程显示摄像头信息至QLabel,可以同时拉伸窗口, ...

  8. unity用虚拟相机截图

    1,工程 2 脚本 Capture.cs using System.Collections; using System.Collections.Generic; using UnityEngine; ...

  9. Unity调用摄像头并截图

    首先界面是这样的,很简易,脚本上挂了三个按钮 直接上代码 using UnityEngine; using UnityEngine.UI;public class WebCamera : MonoBe ...

  10. Unity功能记录(一) ------ 截图/录屏保存到相册(Android/iOS横屏竖屏都可以)

    截屏和录屏unity端代码都已经分享过 : Unity功能记录(十七) ------ 截屏功能 Unity插件(二) ------ NatCorder(录屏保存到相册) 但是之前一个个的其实并没有用在 ...

最新文章

  1. App自动化测试探索(一)借助Appium实现APP的自动化测试
  2. kali 改root_Kali Linux 将默认以非 root 身份运行
  3. Memcached源码分析
  4. SpringMVC拦截器-快速入门详解(应用)
  5. 显式(静态)调用: LIB + DLL + .H
  6. 同字母异序词 python_49. 字母异位次分组(Python)
  7. 使用 Go 实现 TLS socket server
  8. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——E题 Seek the Joker II
  9. Watson的未来就是IBM的未来
  10. 面试了57位程序员,我发现混得好的人都有这个特质!
  11. AD09,如何设置按住鼠标轮放大缩小
  12. 伺服驱动器cn1引脚定义_伺服驱动器CN1引脚定义,和面板操作设置,跪求高手指点。...
  13. Idea导出项目jar包
  14. 关于实习4个月的一些总结
  15. python毕业设计项目源码选题(14)校园失物招领系统毕业设计毕设作品开题报告开题答辩PPT
  16. Boost电路SX1308单电源转双电源输出低成本Sepic+Cuk方案
  17. Spark总结之RDD(四)
  18. ROS 学习笔记3. launch文件的使用
  19. 软件测试基础知识bbst,海盗派测试管理: RSTM.PDF
  20. 机器学习------L1、L2规范化(L1 Regularization、L1 Regularization)

热门文章

  1. Unity多屏幕设置细节
  2. 网络编程三剑客之sed
  3. 养一套美国房子有多贵
  4. oracle exadata x7发布,没有对比就没有伤害 QData T5完虐Oracle Exadata X7
  5. 花一样的数据可视化分析工具汇总,你选谁
  6. 英语背单词软件需求分析
  7. 计算机图形学圆反走样代码,计算机图形学——反走样
  8. SOLIDWORKS出工程图时,小数点前的“0”不显示怎么办?
  9. 微信小程序上传图片(预览 删除 限制图片大小、张数)
  10. Python调用百度API进行语音识别