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

效果

代码

  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. }

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

  1. Unity3d之截图方法

    http://blog.csdn.net/highning0007/article/details/37991787 Unity3d之截图方法 分类: Unity3D2013-11-28 17:13  ...

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

    近期在做Android的项目,当中部分涉及到图像处理的内容.这里先讲述怎样调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法.     PS:作者购买 ...

  3. opencv 截图并保存

    opencv 截图并保存(转载) 代码功能:选择图像中矩形区,按S键截图并保存,Q键退出. #include<opencv2/opencv.hpp> #include<iostrea ...

  4. html2canvas插件对整个网页或者网页某一部分截图并保存为图片

    html2canvas能够实现在用户浏览器端直接对整个或部分页面进行截屏.这个脚本将当前页面渲染成一个canvas图片,通过读取DOM并将不同的样式应用到这些元素上实现.它不需要来自服务器任何渲染,整 ...

  5. 对html进行截图并保存为本地图片

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Python+Selenium练习篇之21-如何截图并保存

    本文介绍如何利用Selenium的方法进行截图,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图.在selenium for python中主要有三个截图方法,我们挑选其中最常用的一种. ge ...

  7. Python3.X Selenium 自动化测试中如何截图并保存成功

    在selenium for python中主要有三个截图方法,我们挑选其中最常用的一种. 挑最常用的:get_screenshot_as_file() 相关代码如下:(下面的代码可直接复制) # co ...

  8. selenium 页面截图并保存

    import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org. ...

  9. 利用HTML5的Video进行视频截图并保存到本地

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. Linux下解压缩 - 中文解决方案

    命令行工具 Unar 以及 Lsar 安装:sudo apt-get install unar: 预览压缩包:lsar example.zip 解压缩:unar example.zip 指定位置解压: ...

  2. 【UOJ #110】【APIO 2015】Bali Sculptures

    http://uoj.ac/problem/110 这道题subtask4和subtask5是不同的算法. 主要思想都是从高位到低位贪心确定答案. 对于subtask4,n比较小,设\(f(i,j)\ ...

  3. [BZOJ3140][HNOI2013]消毒(二分图最小点覆盖)

    3140: [Hnoi2013]消毒 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1621  Solved: 676[Submit][Status] ...

  4. [AHOI2009]同类分布

    题目大意: 问在区间[l,r]内的正整数中,有多少数能被其个位数字之和整除. 思路: 数位DP. 极端情况下,每一位都是9,所以各位数字之和不超过9*18.(为了方便这里用了9*19) f[i][j] ...

  5. poj 1743 后缀数组 求最长不重叠重复子串

    题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题. “主题”是整个音符序列的一个子串,它需要满足如下条件:1 ...

  6. [转]Jquery实现页面定时跳转

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. HDU 5291 Candy Distribution DP 差分 前缀和优化

    Candy Distribution 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5291 Description WY has n kind of ...

  8. 读书笔记_Effective_C++_条款二十六:尽可能延后变量定义式的出现时间

    这个条款从字面意思还是很好理解的,就是在使用这个变量前才去定义,而不是很早就定义了它,而在很后面的时候才去使用.这个条款只适用于对变量声明位置没有要求的语言,比如C++.对于像C或者一些脚本语言,语法 ...

  9. Extjs window组件 拖动统制

    Extjs window组件 拖动控制有时候一拖就拖出了浏览器,在想拖回来就不好办了: 解决办法:参考以下代码,在加载Ext核心库以后执行: Ext.override(Ext.Window, {    ...

  10. HDU 4678 Mine (2013多校8 1003题 博弈)

    Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...