HarmonyOS 鸿蒙Next PhotoPickerComponent选取的相册路径fs无法读取
HarmonyOS 鸿蒙Next PhotoPickerComponent选取的相册路径fs无法读取
通过PhotoPickerComponent选取的相册路径无法通过fs读取 file://media/Photo/45/IMG_XXXXX/XXXXX.png
官方提供的demo是可以,做了简单修改:
import { PhotoPickerComponent, PickerController, PickerOptions, DataType } from '@ohos.file.PhotoPickerComponent'
import { photoAccessHelper } from '@kit.MediaLibraryKit'
import { image } from '@kit.ImageKit';
import fs from '@ohos.file.fs';
@Entry
@Component
struct Index {
pickerOptions: PickerOptions = new PickerOptions();
@State pickerController: PickerController = new PickerController();
@State selectUris: Array<string> = new Array<string>();
@State pixelMap: image.PixelMap | undefined = undefined
aboutToAppear() {
this.pickerOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
this.pickerOptions.maxSelectNumber = 10;
this.pickerOptions.isSearchSupported = false;
this.pickerOptions.isPhotoTakingSupported = false;
// 其他属性.....
}
private onSelect(uri: string) {
// 添加
if (uri) {
this.selectUris.push(uri);
}
}
private onDeselect(uri: string): void {
// 移除
if (uri) {
this.selectUris = this.selectUris.filter((item: string) => {
return item != uri;
})
}
}
async getPixelMap(){
let file = fs.openSync(this.selectUris[0], fs.OpenMode.READ_ONLY);
this.pixelMap = await image.createImageSource(file.fd).createPixelMap();
}
build() {
Stack () {
PhotoPickerComponent({
pickerOptions: this.pickerOptions,
onSelect:(uri: string): void => this.onSelect(uri),
onDeselect:(uri: string): void => this.onDeselect(uri),
pickerController: this.pickerController,
}).height('100%').width('100%')
// 这里模拟应用侧底部的选择栏
Column(){
Row () {
ForEach(this.selectUris, (uri: string) => {
Image(uri).height('10%').width('10%').onClick(() => {
// 点击事件模拟删除操作,通过pickerController向picker组件发送已选择的数据列表,触发picker组件勾选框刷新
this.selectUris = this.selectUris.filter((item: string) => {
return item != uri;
})
this.pickerController.setData(DataType.SET_SELECTED_URIS, this.selectUris);
})
}, (uri: string) => JSON.stringify(uri))
}
Button('展示图片').width(80).height(40)
.onClick(() => {
this.getPixelMap()
})
Image(this.pixelMap).width("20%").height('20%')
}
}
}
}
更多关于HarmonyOS 鸿蒙Next PhotoPickerComponent选取的相册路径fs无法读取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对帖子标题中提到的“HarmonyOS 鸿蒙Next PhotoPickerComponent选取的相册路径fs无法读取”的问题,以下是专业且直接的回答:
在HarmonyOS系统中,使用Next PhotoPickerComponent选取相册图片后,若遇到无法读取所选相册路径(fs)的情况,可能是由于以下几个原因:
-
权限问题:确保应用已正确申请并获得了读取存储空间的权限。在HarmonyOS中,这通常需要在manifest文件中声明相关权限,并在运行时请求用户授权。
-
路径格式问题:检查从PhotoPickerComponent返回的相册路径格式是否正确。有时路径可能包含非法字符或格式不正确,导致无法读取。
-
文件系统访问限制:某些文件或目录可能受到系统保护,无法被普通应用访问。确认所选文件或目录是否处于这样的保护状态。
-
组件返回问题:检查PhotoPickerComponent的实现是否有bug,导致返回的路径不正确或无法访问。
-
系统问题:如果以上均无误,可能是系统本身的问题或特定版本的bug。尝试更新系统或组件到最新版本。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html