unity 启动相机_Unity Android 之 移动端打开相机拍照并保存

“OpenCameraAndSaveImage”脚本具体内容如下:

using System.Collections;

using System.IO;

using UnityEngine;

using UnityEngine.UI;

public class OpenCameraAndSaveImage : MonoBehaviour {

// UI 相关参数

public RawImage rawImage;

public Button button_TakePhoto;

// 摄像机图片参数

private WebCamTexture webCamTexture;

// Use this for initialization

void Start() {

// 打开相机

StartCoroutine("OpenCamera");

// 按钮绑定点击事件

button_TakePhoto.onClick.AddListener(TakePhotoAndSaveImage_Button);

}

///

/// 使用协程打开相机函数

///

///

IEnumerator OpenCamera() {

// 申请相机权限

yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);

// 判断是否有相机权限

if (Application.HasUserAuthorization(UserAuthorization.WebCam)) {

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用佳能相机官方sdk进行再次封装,实现如下功能: //python回调函数接口 typedef void (*PROPERTYEVENT_CALLBACK)(EdsUInt32 inEvent, EdsUInt32 inPropertyID, EdsUInt32 inParam); PROPERTYEVENT_CALLBACK g_property_callback[MAX_CAMERA]; typedef void (*OBJECTEVENT_CALLBACK)(EdsUInt32 inEvent); OBJECTEVENT_CALLBACK g_object_callback[MAX_CAMERA]; typedef void (*STATEEVENT_CALLBACK)(EdsUInt32 inEvent, EdsUInt32 inParam); STATEEVENT_CALLBACK g_state_callback[MAX_CAMERA]; //初始化 EDSDK_API EdsError Init(EdsUInt16 index); EDSDK_API EdsError UnInit(EdsUInt16 index); //拍照 EDSDK_API EdsError HalfShutterAFC(EdsUInt16 index); EDSDK_API EdsError TakePicture(EdsUInt16 index, char** path); EDSDK_API EdsError TakePictureNoAF(EdsUInt16 index, char** path); //录像 EDSDK_API EdsError StartVideo(EdsUInt16 index); EDSDK_API EdsError StopVideo(EdsUInt16 index, char** path); //取景器实时预览 EDSDK_API EdsError StartLiveView(EdsUInt16 index); EDSDK_API EdsError EndLiveView(EdsUInt16 index); EDSDK_API EdsError DownloadEvfImage(EdsUInt16 index, void** pointer, EdsUInt64* length); //调焦 EDSDK_API EdsError SetCameraFocus(EdsUInt16 index, short focus); EDSDK_API void SetFocusCount(EdsUInt16 index, long count); EDSDK_API unsigned int CalFocus(unsigned short objectDistance); EDSDK_API void AutoFocusInit(EdsUInt16 index); EDSDK_API void AutoFocus(EdsUInt16 index, unsigned int objectDistance); //属性 EDSDK_API EdsError SetProperty(EdsUInt16 index, EdsPropertyID propertyID, EdsInt32 property); EDSDK_API EdsError GetProperty(EdsUInt16 index, EdsPropertyID propertyID, EdsUInt32* data); EDSDK_API EdsError GetEvent(); //属性衍生 //切换拍照、录像模式 EDSDK_API EdsError SetDevMode(EdsUInt16 index, eCameraMode mode); EDSDK_API EdsError GetDevMode(EdsUInt16 index, EdsUInt16* mode); //拍摄AE模式 EDSDK_API EdsError SetMovieAEMode(EdsUInt16 index, eAEMode mode); EDSDK_API EdsError GetMovieAEMode(EdsUInt16 index, EdsUInt32* mode); //AF模式 EDSDK_API EdsError SetAFMode(EdsUInt16 index, eAFMode mode); EDSDK_API EdsError GetAFMode(EdsUInt16 index, EdsUInt32* mode); 。。。。。。
要在Unity中实现手机相机拍照保存,首先需要使用Unity的调用手机相机的API。我们可以通过Unity的Input类中的GetButtonDown函数来捕捉到手机相机按钮被按下的事件。 首先,我们需要在Unity中创建一个按钮对象用来触发拍照的操作。然后,在按钮的脚本中,我们可以编写如下代码: ``` using UnityEngine; using System.Collections; using System.IO; public class CameraController : MonoBehaviour { // 定义保存图片的路径和文件名 private string savePath = "/sdcard/DCIM/Camera/"; private string fileName = "photo.png"; // 第一次触发拍照按钮时调用 void OnMouseDown() { StartCoroutine(TakeAndSavePhoto()); } // 拍照保存的协程函数 IEnumerator TakeAndSavePhoto() { // 调用手机相机 yield return Application.RequestUserAuthorization(UserAuthorization.WebCam); if (Application.HasUserAuthorization(UserAuthorization.WebCam)) { WebCamTexture webcamTexture = new WebCamTexture(); webcamTexture.Play(); // 拍照 yield return new WaitForEndOfFrame(); Texture2D photo = new Texture2D(webcamTexture.width, webcamTexture.height); photo.SetPixels(webcamTexture.GetPixels()); photo.Apply(); // 保存照片 byte[] bytes = photo.EncodeToPNG(); File.WriteAllBytes(savePath + fileName, bytes); Debug.Log("照片已保存至:" + savePath + fileName); // 停止相机 webcamTexture.Stop(); } } } ``` 以上的代码使用了Unity的协程函数来实现拍照保存照片的操作。首先,我们使用Application.RequestUserAuthorization函数请求用户授权使用相机。如果授权成功,我们创建一个WebCamTexture对象并将其作为相机预览。 当按钮被按下后,我们调用WebCamTexture.GetPixels函数获取相机的当前帧数据并创建一个新的Texture2D对象用来保存照片。然后,我们使用Texture2D.EncodeToPNG函数将照片转换为PNG格式并使用File.WriteAllBytes函数将照片保存到指定路径。 最后,我们通过调用WebCamTexture.Stop函数停止相机预览。 在代码中,我们将照片保存到了"/sdcard/DCIM/Camera/"路径下的"photo.png"文件。你可以根据你的实际需求修改保存路径和文件名。 希望以上内容对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值