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

2018-01-04  本文已影响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);
    }
}
上一篇下一篇

猜你喜欢

热点阅读