unity在制作很多大屏互动时候都会用到摄像头拍照或者保存图片,摄像头拍照方式也有多种,仅记录一下。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;public class CameraTest : MonoBehaviour
{//摄像头图像类,继承自textureWebCamTexture tex;public Image WebCam;public MeshRenderer ma;public Button saveImage;public RawImage bgimage_02;// public RawImage bgimage_03;int i;void Start(){//开启协程,获取摄像头图像数据StartCoroutine(OpenCamera());saveImage.onClick.AddListener(SaveImage);}// Update is called once per framevoid Update(){}IEnumerator OpenCamera(){//等待用户允许访问yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);//如果用户允许访问,开始获取图像        if (Application.HasUserAuthorization(UserAuthorization.WebCam)){//先获取设备WebCamDevice[] device = WebCamTexture.devices;string deviceName = device[0].name;//然后获取图像tex = new WebCamTexture(deviceName);//将获取的图像赋值ma.material.mainTexture = tex;//开始实施获取tex.Play();}}private void SaveImage(){//在上一段代码中加入该方法Save(tex);i += 1;}public  void Save(WebCamTexture t){Texture2D t2d = new Texture2D(t.width, t.height, TextureFormat.ARGB32, true);//将WebCamTexture 的像素保存到texture2D中t2d.SetPixels(t.GetPixels());//t2d.ReadPixels(new Rect(200,200,200,200),0,0,false);t2d.Apply();//编码byte[] imageTytes = t2d.EncodeToJPG();//if (i % 2 == 1)//{//   bgimage_02.texture= t2d;//}//else//{//    bgimage_03.texture = t2d;//}bgimage_02.texture= t2d;//存储File.WriteAllBytes(Application.streamingAssetsPath + "/my/" + Time.time + ".jpg", imageTytes);}void StopCamera(){//等待用户允许访问//Application.RequestUserAuthorization(UserAuthorization.WebCam);//如果用户允许访问,开始获取图像        if (Application.HasUserAuthorization(UserAuthorization.WebCam)){//先获取设备WebCamDevice[] device = WebCamTexture.devices;string deviceName = device[0].name;//然后获取图像//  tex = new WebCamTexture(deviceName);//  //将获取的图像赋值// ma.material.mainTexture = tex;//开始实施获取tex.Stop();}}//返回按钮public void Back(){StopCamera();UnityEngine.SceneManagement.SceneManager.LoadScene(0);}
}

把它挂到一个有renderer的物体上,

上面已经有调用摄像头并可以保存图片。

保存图片有多种方式

using UnityEngine;
using System.Collections;
using System.IO;
using UnityEngine.UI;
public class FrameAnimation : MonoBehaviour
{public Texture2D image;public int w;public int h;public float nextTime = 0.0f;public float rate = 0.3f;int i = 0;public static string imageName;public RawImage raw;// Use this for initializationvoid Start(){w = Screen.width;h = Screen.height;image = new Texture2D(w, h);}// Update is called once per framevoid Update(){//if (Input.GetMouseButton(0) && Time.time > nextTime)//{//    nextTime = Time.time + rate;//    i++;//    StartCoroutine(SaveImage(i));//}}public void Btn_SavrImage(){拍照保存//i++;//StartCoroutine(SaveImage(i));UnityEngine.SceneManagement.SceneManager.LoadScene(2);}IEnumerator SaveImage(int i){yield return new WaitForEndOfFrame();image.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);//read pixels from screen to textureimage.Apply();byte[] bytes = image.EncodeToPNG();string date = System.DateTime.Now.ToString("dd-MM-yy");imageName = i + date + ".png";File.WriteAllBytes(Application.streamingAssetsPath + "/" +imageName, bytes);ReadImage();Debug.Log("write a pic"+imageName);yield return null;}public void ReadImage(){string  textureName = Application.streamingAssetsPath + imageName;//raw.name = textureName;raw.texture = image;// UnityEngine.SceneManagement.SceneManager.LoadScene(0);}}

注意:image.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);我遇到一个问题截图超过1024,768的时候有时候会报错,这个问题因为后期不用了没有再继续深究。

Unity 调用摄像头拍照保存相关推荐

  1. unity调用摄像头拍照

    我的unity调用摄像头拍照 因为做的是pc端的,所以不知道手机上效果是怎样的,据说代码是完全相同的. 废话不说,上代码, 打开摄像头代码: /// <summary>/// Opens ...

  2. Python:opencv库实现调用摄像头拍照并保存到本地

    导入 opencv-python库,复制代码即可运行 import cv2def picture_shoot(image_name='img.png', image_path=r'E:/') -> ...

  3. Ionic系列——调用摄像头拍照和选择图库照片功能的实现

    2019独角兽企业重金招聘Python工程师标准>>> 1.需求描述 最近要做一个功能就是调用摄像头拍照,然后上传照片的功能,或者直接打开图库选择照片然后上传. 2.准备 ①.添加插 ...

  4. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式

    PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template><div><!--开启摄像头 ...

  5. jquery.webcam.js实现调用摄像头拍照兼容各个浏览器

    jquery.webcam.js实现调用摄像头拍照兼容各个浏览器 1.demo 可直接复制使用,需要在环境里运行. 2.所需 js 文件和 swf 控件可在官方博客下载,地址http://www.xa ...

  6. JavaFX调用摄像头拍照

    JavaFX初体验 初谈JavaFx 普通页面的实现 JavaFX调用摄像头拍照 安装Scene Builder 背景: 最近有做一个web项目用JavaFx做成客户端的需求,从第一次听说JavaFx ...

  7. h5调用摄像头+拍照+上传图片-----h5+js+ajax

    敬请关注博客,后期不断更新优质博文,谢谢 项目中需要用到调用摄像头拍照并上传照片到后台,特此记录:如有不足,望广大同行们批评指出. 1,前端页面 visitor/touch/touchIndex/li ...

  8. 硬触发控制相机拍照matlab代码,使用matlab调用摄像头拍照并发到邮箱

    之前在网上看到有用matlab调用摄像头的,也有用matlab发送电子邮件的,所以突发奇想,何不将这两者结合起来,即使用matlab先调用摄像头拍照,再将照片发到邮箱里面,如果能将程序编译成exe文件 ...

  9. android: 调用摄像头拍照

    很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...

最新文章

  1. Effective C++ 1.0 -- 概述
  2. params(C# 参考)
  3. python中类的嵌套_python类的嵌套
  4. python编程从入门到精通 叶维忠 pdf-叶维忠《Python编程从入门到精通》PDF
  5. Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
  6. Boost::context模块callcc的回声测试程序
  7. 记一次应用配置的数据库连接被打满问题
  8. 【粉丝需求】如何把一个前端网页都搞下来?
  9. 隐层元素闪一下_太阳一直依靠什么元素在燃烧,地球上的重元素又是怎么来的?...
  10. du -sh 如何找到最大的文件夹_小白必看!手把手教你如何在linux上安装redis数据库...
  11. 不是计算机专业及其相关专业,对软件编程一窍不通,能学好编程吗?
  12. 解决eclipse/myeclipse导入项目时出现红色叹号的方法
  13. java怎么反编译_Java入门教程-Java的反编译
  14. 夜间灯光数据dn值_黑夜给了我黑色的眼睛——全球夜间灯光数据分析
  15. PROTEL网络教程前
  16. 考研二阶矩阵合同的计算
  17. 习题 9.9 商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。
  18. qt中各种类型转成uchar
  19. python坐标转换_python 编写的经纬度坐标转换类
  20. 老路用得上的商学课-81-100学习(读书)笔记

热门文章

  1. hive中开窗函数 :percent_rank()的含义
  2. Geometry创建
  3. RuoYi-Vue,执行npm run dev,报错“RuoYi-Vue\ruoyi-ui\node_modules\eslint\lib\cli-engine\cli-engine.js:421”
  4. 王自如与老罗的辩论赛谁赢了?!
  5. JMockit mock 静态块 static block
  6. js校验图片是否加载成功或失败
  7. java合法标识符有哪些_Java中的合法标识符
  8. 小巧方便C语言开发工具 Dev-C++
  9. magic4.0什么时候升级鸿蒙,科技知识:magic4.0什么时候更新 magic4.0更新时间介绍...
  10. NVIDIA显卡计算力