unity调用摄像头拍照

3 篇文章 0 订阅

 我的unity调用摄像头拍照

因为做的是pc端的,所以不知道手机上效果是怎样的,据说代码是完全相同的微笑

废话不说,上代码,

打开摄像头代码:

/// <summary>
		/// Opens the camera
		/// </summary>
		/// <returns>The camera.</returns>
		IEnumerator OpenCamera()
		{
			yield return Application.RequestUserAuthorization (UserAuthorization.WebCam);
			if (Application.HasUserAuthorization (UserAuthorization.WebCam)) {
				WebCamDevice[] devices = WebCamTexture.devices;
				webCam = new WebCamTexture (devices [0].name, Screen.width, Screen.height, 12);
				image_userIcon.texture = webCam;
				webCam.Play ();
			}
		}
保存图片代码如下:

/// <summary>
		/// Gets the texture2d.
		/// </summary>
		/// <returns>The texture2d.</returns>
		IEnumerator GetTexture2d()
		{
			yield return new WaitForEndOfFrame();
			RectTransform rt = image_userIcon.GetComponent<RectTransform> ();
			Vector2 v2Min = new Vector2( rt.anchorMin.x * Screen.width,rt.anchorMin.y * Screen.height);
			Vector2 v2Max = new Vector2( rt.anchorMax.x * Screen.width,rt.anchorMax.y * Screen.height);
			Texture2D t = new Texture2D((int)(v2Max.x-v2Min.x),(int)(v2Max.y-v2Min.y));//要保存图片的大小
			//截取的区域
			t.ReadPixels(new Rect (v2Min.x,v2Min.y,(int)(v2Max.x-v2Min.x),(int)(v2Max.y-v2Min.y)),0,0,false);
			t.Apply();
			image_userIcon.texture = t;
			//把图片数据转换为byte数组

			byte[] byt = t.EncodeToPNG();

			//然后保存为图片

			File.WriteAllBytes(Application.dataPath + "/StreamingAssets/shexiang/" + Time.time + ".jpg", byt);
			webCam.Pause ();
		}
运行完这段效果大概是这样滴:


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值