鸿蒙实现相机拍照及相册选择照片

前言:

1.如果你的应用不是存储类型或者相机拍照类型,你就需要用 @kit.CameraKit Api 实现相机拍照和相册选择照片功能,如果你不用这个的话,你使用 picker.PhotoViewPicker ,你就需要申请权限,那你提交应用审核的时候就会被拒,说你使用了敏感权限。

2.以下是自己封装的一个工具类,可直接导入使用

import { camera, cameraPicker } from'@kit.CameraKit';

import { photoAccessHelper } from'@kit.MediaLibraryKit';

import fs from'@ohos.file.fs';

import { BusinessError } from'@kit.BasicServicesKit';

classPhotoPicker {

privateimgSrc:string = ''

//拍照

asynctakePhoto():Promise<string> {

const pickerResult = awaitcameraPicker.pick(getContext(),

cameraPicker.PickerMediaType.PHOTO\], { cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK }); **this**.saveImage(pickerResult.resultUri); **return this**.imgSrc; } //从相册中选 photoAccessHelper版 **async**pickPhoto():Promise\ { **const** PhotoSelectOptions = **new**photoAccessHelper.PhotoSelectOptions(); PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; //选择图片数量 PhotoSelectOptions.maxSelectNumber = 1; **let** photoPicker = **new**photoAccessHelper.PhotoViewPicker(); **try**{ **const** res = **await**photoPicker.select(PhotoSelectOptions) **if**(res.photoUris.length \<= 0) { **return** } **this**.saveImage(res.photoUris\[0\]) **return this**.imgSrc; } **catch**(e) { console.log('img----err--',JSON.stringify(e)) } } //存到应用缓存 **private**saveImage(src:string){ **try**{ **const** destPath = getContext(**this**).cacheDir **const**fileType = src.split('.')\[1

constfileName = Date.now()

constpath = `{destPath}/{fileName}.${fileType}`

constimgFile = fs.openSync(src,fs.OpenMode.READ_ONLY)

consttempFile = fs.openSync(path,fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)

// 拷贝

fs.copyFileSync(imgFile.fd,tempFile.fd)

fs.close(imgFile)

fs.close(tempFile)

// 从沙箱中获取图片路径

// this.imgSrc = fileUri.getUriFromPath(path)

this.imgSrc = path

} catch(e) {

let err: BusinessError = e asBusinessError;

console.info("img--[picker] Photo Save error = " + JSON.stringify(err));

}

}

}

export const photoPicker = newPhotoPicker()

相关推荐
工业相机定制与开发28 分钟前
云钥科技AI智能相机为图文印刷行业提供全流程检测解决方案
人工智能·数码相机
G***技2 小时前
嵌入式计算机AF208:焊接机器人高效精准作业的核心引擎
数码相机
问水っ3 小时前
Qt Creator快速入门 第三版 第14章 相机和音频录制
数码相机
北京耐用通信4 小时前
电子制造行业:耐达讯自动化Profinet转DeviceNet网关助力工业相机高效互联
人工智能·数码相机·物联网·网络协议·自动化·信息与通信
JMchen1235 小时前
跨平台相机方案深度对比:CameraX vs. Flutter Camera vs. React Native
java·经验分享·数码相机·flutter·react native·kotlin·dart
格林威6 小时前
Baumer相机系统延迟测量与补偿:保障实时控制同步性的 5 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测·工业相机
_李小白19 小时前
【Android 美颜相机】第二十三天:GPUImageDarkenBlendFilter(变暗混合滤镜)
android·数码相机
JMchen1231 天前
Android计算摄影实战:多帧合成、HDR+与夜景算法深度剖析
android·经验分享·数码相机·算法·移动开发·android-studio
leiming61 天前
Qt视频监控系统开发实战:从视频捕获到照片管理
linux·数码相机·音视频
ZPC82101 天前
机器人手眼标定
人工智能·python·数码相机·算法·机器人