Unity3d 截圖並上傳到伺服器
阿新 • • 發佈:2019-02-10
最近專案所需,需要捕抓影象並上傳到伺服器。
參考了別人的文章,加以改動。
寫此部落格以記錄。
設定全域性變數
public Camera cutFrameCamer;
Rect canvas;
開始截圖
canvas.Set(0, 0, Screen.width, Screen.height);//設定畫布大小等於當前螢幕的寬和高。
CaptureScreen(cutFrameCamer, canvas); 執行截圖方法。
截圖並上傳
public void CaptureScreen(Camera c, Rect r)
{
//捕抓攝像機影象並轉換成字元陣列 RenderTexture rt = new RenderTexture((int)r.width, (int)r.height, 0); c.targetTexture = rt; c.Render(); RenderTexture.active = rt; Texture2D screenShot = new Texture2D((int)r.width, (int)r.height, TextureFormat.RGB24, false); screenShot.ReadPixels(r, 0, 0); screenShot.Apply(); c.targetTexture = null; RenderTexture.active = null; GameObject.Destroy(rt);
byte[] bytes = screenShot.EncodeToPNG();
string url = "http://xxxxxxxxxxxxxxxxx";//要上傳到的地址
WWWForm form = new WWWForm();
form.AddField("filename", fileName);
form.AddBinaryData("photo", bytes);//把圖片流上傳
迭代器 等待伺服器返回WWW www = new WWW(url, form); StartCoroutine(PostData(www));//啟動子執行緒 Destroy(screenShot);//銷燬 }
IEnumerator PostData(WWW www) { yield return www; Debug.Log(www.text);//輸出伺服器返回結果。 }