Unity3D随意截图并保存

http://blog.csdn.net/awnuxcvbn/article/details/9199245

效果

代码

[csharp] view plaincopy

  1. <pre name="code" class="csharp">using UnityEngine;
  2. using System.Collections;
  3. using System.IO;
  4. public class CropPicture : MonoBehaviour
  5. {
  6. string localPath = "http://192.168.1.100:8080/picture/15.jpg";
  7. Texture2D image;
  8. Texture2D cutImage;
  9. WWW www;
  10. Rect rect;
  11. float time;
  12. Vector2 pos1;
  13. Vector2 pos2;
  14. // Use this for initialization
  15. void Start()
  16. {
  17. StartCoroutine(LoadImage());
  18. }
  19. // Update is called once per frame
  20. void Update()
  21. {
  22. //点击鼠标左键,记录第一个位置
  23. if (Input.GetMouseButtonDown(0))
  24. {
  25. pos1 = Input.mousePosition;
  26. time = Time.time;
  27. if (time > 1f)
  28. {
  29. Debug.Log(pos1);
  30. }
  31. }
  32. //放开左键记录第二个位置
  33. if (Input.GetMouseButtonUp(0))
  34. {
  35. pos2 = Input.mousePosition;
  36. Debug.Log(pos2);
  37. StartCoroutine(CutImage());
  38. time = 0;
  39. }
  40. }
  41. void OnGUI()
  42. {
  43. //当下载完成
  44. if (www.isDone)
  45. {
  46. GUI.DrawTexture(new Rect(0, 0, 600, 904), image);
  47. }
  48. GUI.Button(new Rect(0, 0, 100, 50), "W" + Screen.width + "H" + Screen.height);
  49. if (pos1 != null)
  50. {
  51. GUI.Button(new Rect(0, 50, 150, 50), pos1.ToString());
  52. }
  53. if (pos2 != null)
  54. {
  55. GUI.Button(new Rect(0, 100, 150, 50), pos2.ToString());
  56. }
  57. if (cutImage != null)
  58. {
  59. GUI.Button(new Rect(0, 150, 150, 50), "image W" + cutImage.width + "H" + cutImage.height);
  60. }
  61. if (rect != null)
  62. {
  63. GUI.Button(new Rect(0, 200, 250, 50), rect.ToString());
  64. }
  65. }
  66. //下载图片
  67. IEnumerator LoadImage()
  68. {
  69. www = new WWW(localPath);
  70. yield return www;
  71. image = www.texture;
  72. if (www.error != null)
  73. {
  74. Debug.Log(www.error);
  75. }
  76. }
  77. //截图
  78. IEnumerator CutImage()
  79. {
  80. //图片大小
  81. cutImage = new Texture2D((int)(pos2.x - pos1.x), (int)(pos1.y - pos2.y), TextureFormat.RGB24, true);
  82. //坐标左下角为0
  83. rect = new Rect((int)pos1.x, Screen.height - (int)(Screen.height - pos2.y), (int)(pos2.x - pos1.x), (int)(pos1.y - pos2.y));
  84. yield return new WaitForEndOfFrame();
  85. cutImage.ReadPixels(rect, 0, 0, true);
  86. cutImage.Apply();
  87. yield return cutImage;
  88. byte[] byt = cutImage.EncodeToPNG();
  89. //保存截图
  90. File.WriteAllBytes(Application.streamingAssetsPath + "/CutImage.png", byt);
  91. }
  92. }
时间: 2024-08-02 15:43:05

Unity3D随意截图并保存的相关文章

Unity3d之截图方法

http://blog.csdn.net/highning0007/article/details/37991787 Unity3d之截图方法 分类: Unity3D2013-11-28 17:13 1014人阅读 评论(2) 收藏 举报 AnYuanLzhunityunity3d截屏 下面是我总结的.在u3d中的,三种截屏方法: 1.使用Application类下的CaptureScreenshot方法. [csharp] view plaincopy void CaptureScreen()

[Android] 拍照、截图、保存并显示在ImageView控件中

最近在做Android的项目,其中部分涉及到图像处理的内容.这里先讲述如何调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法. PS:作者购买了本<Android第一行代码 著:郭霖>,参照里面的内容完成(推荐该书,前面的布局及应用非常不错).网上这类资料非常多,作者仅仅分享给初学者同时在线记录些内容,希望对大家有所帮助. 首先,设置activity_main.xml为LinearLayout布局且 android:orientation=&q

Winform 根据Point截图并保存到指定路径

1 /// <summary> 2 /// 获取图片流 3 /// </summary> 4 /// <param name="ImageXY">图片屏幕起始点</param> 5 /// <param name="ImageSize">图片大小</param> 6 /// <returns></returns> 7 public string CutImage(Poin

截图怎么保存为指定格式的图片

我们在日常生活中,经常会需要指定格式的图片,那么我们是不是有这样的困惑:截图怎么保存为指定格式的图片?如何截图和转变图片格式?电脑上的截图怎么变成jpg格式把电脑整个屏幕截了图后,怎么保存为图片jpg格式?桌面截图图片,怎么改格式截图截的图片怎样变为JPG图片格式?qq截图怎么转化成JPG怎样把QQ截图格式转换成别的格式 截图及图片处理教程 原文地址:http://blog.51cto.com/13172026/2177414

opencv2视频截图并保存

<pre name="code" class="cpp"><pre name="code" class="cpp">#include <opencv2/highgui/highgui.hpp> #include <opencv2\opencv.hpp> #include <iostream> #include <math.h> #include <s

Unity3d的截图功能

下面是我总结的.在u3d中的,三种截屏方法: 1.使用Application类下的CaptureScreenshot方法. [csharp] view plaincopy void CaptureScreen() { Application.CaptureScreenshot("Screenshot.png", 0); } 这个方法,截取的是某一帧时整个游戏的画面,或者说是全屏截图吧. a.不能针对某一个相机(camera)的画面,进行截图. b.对局部画面截图,实现起来不方便,效率也

网页截图分段保存

问题:不知道谷歌浏览器中,将很长的网页分段保存,有插件可供选择.现在只能是通过打印成oxps再转化成图片,有些麻烦.打印成PDF再转图片,图片质量相当糟糕.最好是有那种自定义长度的截图插件,试了20来个没发现一个理想的.爱可可爱生活老师的每日分享,除了使用feeds软件阅读外,每天整理那么多文章并存档,真不像是一个人干的:这里有一段采访介绍https://mp.weixin.qq.com/s/T4NwqjKRb1H4qlzjo2MZag------摘要------------陈光:RSS.Twi

Unity3d之截图

1.Application.CaptureScreenshot("Screenshot.png", 0); 2. exture2D CaptureScreenshot2(Rect rect) { // 先创建一个的空纹理,大小可根据实现需要来设置 Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24,false); // 读取屏幕像素信息并存储为纹理数据,

【转】使用adb命令对手机进行截屏(截图)保存到电脑,SDCard

原文网址:http://blog.csdn.net/huangyabin001/article/details/29198367 adb shell /system/bin/screencap -p /sdcard/screenshot.png(保存到SDCard) adb pull /sdcard/screenshot.png d:/screenshot.png(保存到电脑)