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

这篇博客介绍了如何在Unity中实现Android移动端打开相机拍照并保存图片的功能。通过`OpenCameraAndSaveImage`脚本,利用WebCamTexture打开相机,获取图像并将其转换为Texture2D,然后保存为JPG格式到指定路径。
摘要由CSDN通过智能技术生成

“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)) {

使用佳能相机官方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); 。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值