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

前言:

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版

asyncpickPhoto():Promise<string | void> {

const PhotoSelectOptions = newphotoAccessHelper.PhotoSelectOptions();

PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;

//选择图片数量

PhotoSelectOptions.maxSelectNumber = 1;

let photoPicker = newphotoAccessHelper.PhotoViewPicker();

try{

const res = awaitphotoPicker.select(PhotoSelectOptions)

if(res.photoUris.length <= 0) {

return

}

this.saveImage(res.photoUris0)

return this.imgSrc;

} catch(e) {

console.log('img----err--',JSON.stringify(e))

}

}

//存到应用缓存

privatesaveImage(src:string){

try{

const destPath = getContext(this).cacheDir

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

相关推荐
木 东2 小时前
图像高亮处过曝,该如何解决
图像处理·数码相机·camera·isp
2601_957418805 小时前
Android相机有线连接(PTP/MTP)协议栈实现与优化实践
数码相机
神仙别闹5 小时前
基于Object3D 实现光线追踪
数码相机·3d
椰椰气泡1 天前
CCD照片导出后模糊怎么办?AI清晰度修复实测教程
图像处理·人工智能·数码相机
AI浩1 天前
CityFlow:面向多目标多相机车辆跟踪与重识别的城市级基准
数码相机
AGV算法笔记1 天前
OpenCV 二维码三维定位 普通摄像头也能测空间坐标
人工智能·数码相机·opencv·工业视觉· 机器人视觉
2601_957418801 天前
Android相机有线连接全链路技术解析:从协议栈到商业级实现
数码相机
博图光电2 天前
博图DVS相机,高速低延迟视觉感知首选
人工智能·数码相机
YANQ6622 天前
7.Gemini相机+yoloseg+foundationpose环境搭建及应用
数码相机
数智工坊2 天前
《计算机双目立体视觉》高宏伟:第3章-对极几何及其恢复方法
笔记·数码相机