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

前言:

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

相关推荐
FLJwu3 天前
存储与固件量产实战01:运动相机TF卡量产翻车实录!V30≠4K可用,90%OEM踩中的隐形售后坑
经验分享·数码相机·相机
FLJwu4 天前
整机可靠性测试实战 03:防水密封可靠性|IP67/IP68 结构设计、密封胶圈选型与泡水测试量产翻车整改
经验分享·数码相机·相机
FLJwu8 天前
传感器与图像 ISP 实战 03:运动相机图像量产一致性|批次色差、白平衡漂移、整机标定与出厂图像质检方案|20 年源头工厂量产经验
图像处理·经验分享·数码相机·相机·isp
蓝宝石的傻话9 天前
MiBee Eye Notebook:把闲置笔记本变成一台带麦克风的网络摄像头
数码相机·rust
大熊背10 天前
《Color constancy by characterization of illumination chromaticity》之色度色域最大化算法(一)
数码相机·算法·白平衡·色度色域
xwz小王子10 天前
【通用世界模型】把机器人动作变成像素流!NVIDIA 提出 Hydra-0:跨人类、单臂与双臂统一预测和控制
数码相机·机器人
菩提树下的凡夫11 天前
激光振镜双目结构光3D相机丢点问题
数码相机·3d
YMWM_12 天前
查看realsense相机序列号脚本
开发语言·python·数码相机
视觉工程师070613 天前
工业相机选择CCD 还是 CMOS
数码相机·视觉检测
FLJwu13 天前
运动相机 ID 外观与壳体开模实战 02:壳体注塑缺陷|缩水、气泡、披风、熔接痕量产改善方案|20 年源头工厂量产经验
经验分享·数码相机·相机