Unity3d 截屏并上传到服务器

来源:互联网 发布:淘宝介入售后 退货拒收 编辑:程序博客网 时间:2024/06/06 11:45

最近项目所需,需要捕抓图像并上传到服务器。

参考了别人的文章,加以改动。

写此博客以记录。

参考博客


设置全局变量

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);//输出服务器返回结果。    }



0 0