第一步:申请文件权限(很重要)
申请方法见上一篇博客 https://blog.csdn.net/qq_15509071/article/details/135659048
第二步:打开相册,选取图片
try {let PhotoSelectOptions = new picker.PhotoSelectOptions();PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;PhotoSelectOptions.maxSelectNumber = 5;let photoPicker = new picker.PhotoViewPicker();photoPicker.select(PhotoSelectOptions).then(async (PhotoSelectResult: picker.PhotoSelectResult) => {console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));}).catch((err: BusinessError) => {console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));});
第三步:返回的是图片的路径,然后转成 ImageBitmap
if(PhotoSelectResult.photoUris.length > 0){let filePath = PhotoSelectResult.photoUris[0];this.context2.drawImage(new ImageBitmap(filePath),0,0,130,130)
}
绘图相关的代码可以参考另一篇博客:https://blog.csdn.net/qq_15509071/article/details/135624812
然后就完成了相册图片加载到画布的功能
'ohos.permission.MEDIA_LOCATION' 显示的是读取相册权限
注:如果没有申请权限,或者用错误的方式申请权限都是不成功的
而且,虽然申请的是读取文件的权限,但是是不需要使用fs.open等文件操作就能获取的,
可以直接使用new ImageBitmap(filePath),这个地方花费了三个小时,以次记录