Unity3D随意截图并保存
效果代码using UnityEngine;using System.Collections;using System.IO;public class CropPicture : MonoBehaviour {string localPath = "http://192.168.1.100:8080/picture/15.jpg";Textur
·
效果
代码
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();
//保存截图Project面板下要创建StreamingAssets文件夹,保存文件后要刷新Project面板图片才会显示出来
File.WriteAllBytes(Application.streamingAssetsPath + "/CutImage.png", byt);
}
}
2016.5.7.17.34修改后的代码
using UnityEngine;
using System.Collections;
using System.IO;
using System;
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.dataPath+ "/"+DateTime.Now.ToFileTime().ToString()+".png", byt);
}
}
这里是一个专注于游戏开发的社区,我们致力于为广大游戏爱好者提供一个良好的学习和交流平台。我们的专区包含了各大流行引擎的技术博文,涵盖了从入门到进阶的各个阶段,无论你是初学者还是资深开发者,都能在这里找到适合自己的内容。除此之外,我们还会不定期举办游戏开发相关的活动,让大家更好地交流互动。加入我们,一起探索游戏开发的奥秘吧!
更多推荐
已为社区贡献1条内容
所有评论(0)