Unity的拍照功能

   工作的第一个功能就是使用Unity进行拍照,并对拍照之后的照片进行上传服务器。上网查了很多相关的资料,当然了博客也有很多人提供了相关的代码。一开始我自己先做了个小项目,在window10下拍到照片。并能完整的保存在电脑当中。但是公司的项目是要导入到Ipad中的,这就涉及到了前置镜头和后者镜头的问题。电脑使用的是前置镜头,而Ipad则使用的后者镜头,这里就要进行计算转换。并且我发现导入到Ipad出现了拍照界面小了很多,真的是步步是坑,愁死我了。当然了,最后还是解决了。    

 

    public string deviceName;

 

    public Vector2 resSize = new Vector2(241,665);

 

 

  

  private Vector2 NewPoint = new Vector2(Screen.width/2,Screen.height/2);

 

        public int height=856;

 

        public int width=988;

 

        WebCamTexture tex;

 

        byte[] bs;

 

 

void OnGUI() {

 

            if (tex != null)
            {


               GUIUtility.RotateAroundPivot(-90, new Vector2(NewPoint.x + height / 2, NewPoint.y + width / 2));    //围绕着某一个点旋转

 

               GUIUtility.ScaleAroundPivot(new Vector2(1, -1), new Vector2(NewPoint.x + height / 2, NewPoint.y + width / 2));  // 将位置进行翻转

 

               GUI.DrawTexture(new Rect(resSize.x, resSize.y,width,height), tex);
            }
        }

 

 

 void Start(){

 

 

  StartCoroutine(start());

 

 

   }

 

void Update(){

 

   if(input.getKey(keycode.1)){

 

    StartCoroutine(getPhotos());

}

 

}

  

 

 

 IEnumerator start()
        {
            yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);

 

            if (Application.HasUserAuthorization(UserAuthorization.WebCam))
            {
                WebCamDevice[] devices = WebCamTexture.devices;

 

                deviceName = devices[0].name;

 

                tex = new WebCamTexture(deviceName,width,height, 12);

 

                tex.Play();
            } 
       

 

 

  IEnumerator getPhotos()
        {
            yield return new WaitForEndOfFrame();

 

            Texture2D t = new Texture2D(width,height);

 

            t.ReadPixels(new Rect(resSize.x, resSize.y,width,height), 0,0);

 

            bs = t.EncodeToPNG();

 

            File.WriteAllBytes(Application.persistentDataPath + "/" + Time.deltaTime + ".png", bs);

 

            t.Apply();

 

        }

 

功能的实现跟其他博主的差不了多少,这里就多了一个前置转换后置的功能,还有就是导入到Ipad拍照的界面小了三倍,这个是根据我的项目得出来的。具体的还是要自己去测试吧!

 

 

刚刚开始写博客,可能不能将所知道的完整的表达出来,有什么疑问的话可以给我留言。有什么不足,有劳各位指出啦!

 

 

 

你可能感兴趣的:(Unity的拍照功能)