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

前言:

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

相关推荐
Ai智享1 小时前
世界坐标到UV纹理坐标的映射
数码相机·uv
3DVisionary1 天前
蓝光三维扫描技术:手机闪光灯模块全尺寸3D检测的精准解决方案
python·数码相机·3d·智能手机·蓝光3d扫描技术·非接触、高效率、全尺寸检测·完美适配手机微型零部件
庸俗今天不摸鱼3 天前
Three.js 进阶(灯光阴影关系和设置、平行光、阴影相机)
开发语言·javascript·数码相机
Ai智享3 天前
标定棋盘格大小的选择
数码相机
Joney Feng3 天前
多光谱相机数据采集过程中常见仪器
数码相机
Ai智享3 天前
怎么选相机分辨率、投影仪尺寸、标定板大小等硬件
数码相机
表面矿工3 天前
unity相机缩放
数码相机·unity·游戏引擎
Kai HVZ4 天前
《PaddleOCR》—— 多相机协同工业字符检测与异常报警系统
数码相机·计算机视觉·ocr
东临碣石826 天前
【AI论文】GEN3C: 基于3D信息的全球一致视频生成技术,实现精确相机控制
人工智能·数码相机·3d
提着小灯找呀找8 天前
3D相机的种类
数码相机·3d