美文网首页
Unity3D调用摄像头并保持为图片然后加载到场景中代码 拍照照

Unity3D调用摄像头并保持为图片然后加载到场景中代码 拍照照

作者: 壹米玖坤 | 来源:发表于2018-01-04 14:22 被阅读0次
    using UnityEngine;
    using System.Collections;
    using System.IO;
    
    public class CameraController : MonoBehaviour {
        public string deviceName;
      public  WebCamTexture webTex;
      public GameObject objCameraController;
      public GameObject objAvatar;
      public GameObject ImgAtlas;
      public string strTempTime="";
        // Use this for initialization
        void Start () {
       
        }
       
        // Update is called once per frame
        void Update () {
            if(strTempTime!="")
            {
             //   GameObject.Find("pig5").GetComponent().mainTexture = Resources.Load(strTempTime.ToString(), typeof(Texture)) as Texture;
            //    print("44444:"+strTempTime);
            }
            
        }
        ///
        /// 调用摄像机
        ///
        ///
        IEnumerator CallTheCamera()
        {
            yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
            if(Application.HasUserAuthorization(UserAuthorization.WebCam))
            {
                WebCamDevice[] devices = WebCamTexture.devices;
                deviceName = devices[0].name;
                //摄像机摄像的区域
                webTex = new WebCamTexture(deviceName, 400, 300, -112);
                GameObject.Find("CameraTexture").GetComponent().mainTexture = webTex;
                webTex.Play();
            }
        }
        ///
        /// 获取并保存texture
        ///
        ///
        IEnumerator GetTexture2D()
        {
            print(GameObject.Find("CameraTexture").transform.localPosition);
            yield return new WaitForEndOfFrame();
            Texture2D t = new Texture2D(GameObject.Find("CameraTexture").GetComponent().mainTexture.width, GameObject.Find("CameraTexture").GetComponent().mainTexture.height);
            t.ReadPixels(new Rect(15, 177, 406.5f, 281.6f), 0, 0, false);
            t.Apply();
            //把图片数据转换为byte数组
            byte[] byt = t.EncodeToPNG();
            //然后保存为图片
             strTempTime = Time.time.ToString();
            print("11111:"+strTempTime);
             File.WriteAllBytes(Application.dataPath + "/Resources/" + strTempTime + ".jpg", byt);
            print("22222"+strTempTime);
            //GameObject atlasPrefab = Resources.Load("TempAtlas") as GameObject;
           // Instantiate(ImgAtlas) as GameObject;
        //    tempA.GetComponent().spriteList.Add(
    //
            UnityEditor.AssetDatabase.Refresh();
            //yield return new WaitForSeconds(1);
            GameObject.Find("pig5").GetComponent().mainTexture = Resources.Load(strTempTime.ToString(), typeof(Texture)) as Texture;
            print("33333"+strTempTime);
       //     NGUITools.AddSprite(tempA, tempA.GetComponent(), "tempSprite");
         //   UIAtlas atlas = (Instantiate(ImgAtlas) as GameObject).GetComponent();
         //   Texture text = Resources.Load(Application.dataPath + "/Resources/" + strTempTime + ".jpg", typeof(Texture)) as Texture;
          //  print(atlas.ToString());
            //UISlicedSprite ssprite = NGUITools.AddWidget(Game);
           // GameObject.Find("pig5").GetComponent().s
            //UIAtlas atlas = Resources.Load(Application.dataPath + "/test/" + "Camera Atlas", typeof(UIAtlas)) as UIAtlas;
            //print(atlas.ToString());
          //  objAvatar.GetComponent().spriteName = atlas.name;//this.gameObject.GetComponent().spriteName;
            //objCameraController.SetActive(false);
        }
        void CameraStart()
        {
            StartCoroutine("CallTheCamera");
        }
        void CameraSStart()
        {
            StartCoroutine("GetTexture2D");
        }
        void CameraRestart()
        {
            webTex.Play();
        }
        void CameraPause()
        {
            webTex.Pause();
        }
        void ClickCameraBtn()
        {
            objCameraController.SetActive(true);
        }
    }
    

    相关文章

      网友评论

          本文标题:Unity3D调用摄像头并保持为图片然后加载到场景中代码 拍照照

          本文链接:https://www.haomeiwen.com/subject/grernxtx.html