效果
代码
<pre name="code" class="csharp">using UnityEngine; using System.Collections; using System.IO; public class CropPicture : MonoBehaviour { string localPath = "http://192.168.1.100:8080/picture/15.jpg"; Texture2D image; Texture2D cutImage; WWW www; Rect rect; float time; Vector2 pos1; Vector2 pos2; // Use this for initialization void Start() { StartCoroutine(LoadImage()); } // Update is called once per frame void Update() { //点击鼠标左键,记录第一个位置 if (Input.GetMouseButtonDown(0)) { pos1 = Input.mousePosition; time = Time.time; if (time > 1f) { Debug.Log(pos1); } } //放开左键记录第二个位置 if (Input.GetMouseButtonUp(0)) { pos2 = Input.mousePosition; Debug.Log(pos2); StartCoroutine(CutImage()); time = 0; } } void OnGUI() { //当下载完成 if (www.isDone) { GUI.DrawTexture(new Rect(0, 0, 600, 904), image); } GUI.Button(new Rect(0, 0, 100, 50), "W" + Screen.width + "H" + Screen.height); if (pos1 != null) { GUI.Button(new Rect(0, 50, 150, 50), pos1.ToString()); } if (pos2 != null) { GUI.Button(new Rect(0, 100, 150, 50), pos2.ToString()); } if (cutImage != null) { GUI.Button(new Rect(0, 150, 150, 50), "image W" + cutImage.width + "H" + cutImage.height); } if (rect != null) { GUI.Button(new Rect(0, 200, 250, 50), rect.ToString()); } } //下载图片 IEnumerator LoadImage() { www = new WWW(localPath); yield return www; image = www.texture; if (www.error != null) { Debug.Log(www.error); } } //截图 IEnumerator CutImage() { //图片大小 cutImage = new Texture2D((int)(pos2.x - pos1.x), (int)(pos1.y - pos2.y), TextureFormat.RGB24, true); //坐标左下角为0 rect = new Rect((int)pos1.x, Screen.height - (int)(Screen.height - pos2.y), (int)(pos2.x - pos1.x), (int)(pos1.y - pos2.y)); yield return new WaitForEndOfFrame(); cutImage.ReadPixels(rect, 0, 0, true); cutImage.Apply(); yield return cutImage; byte[] byt = cutImage.EncodeToPNG(); //保存截图 File.WriteAllBytes(Application.streamingAssetsPath + "/CutImage.png", byt); } }