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

前言:

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()

相关推荐
bbbbbb4bayue9 小时前
专业便携条码打印机选购指南:5大关键指标助您避开采购陷阱
数码相机
PPPPPaPeR.15 小时前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
yunjingtianhe2 天前
EL隐裂检测仪的优势—精准捕捉细微隐裂、微小断栅等隐蔽性极强的隐患
数码相机
PHOSKEY2 天前
3D工业相机如何“读透”每一个字符?快速识别、高精度3D测量
数码相机·3d
听风吹雨yu3 天前
STM32F407-LWIP-Onvif协议控制海康相机
stm32·嵌入式硬件·数码相机
光_辉4 天前
使用代码访问海康相机
数码相机
格林威4 天前
相机的“对焦”和“变焦”,这二者有什么区别?
开发语言·人工智能·数码相机·opencv·算法·计算机视觉·视觉检测
光_辉4 天前
关于相机拍照的一些说明
数码相机
光_辉4 天前
调用海康相机实现事件监测并拍照
数码相机
JMchen1234 天前
Android相机硬件抽象层(HAL)逆向工程:定制ROM的相机优化深度指南
android·开发语言·c++·python·数码相机·移动开发·android studio