HarmonyOS 鸿蒙Next openHarmony 使用媒体库接口 '@ohos.multimedia.mediaLibrary' 是否能获取到图片的绝对路径
HarmonyOS 鸿蒙Next openHarmony 使用媒体库接口 ‘@ohos.multimedia.mediaLibrary’ 是否能获取到图片的绝对路径 在使用WEB 组件 需要将板子的图片资源 传入html展示 ,不知道是不是在html上必须使用图片资源的绝对路径,才能将系统图片展现在使用WEB组件加载的html中
有没有大佬这样用过
可以获取绝对路径,方法是通过获得媒体文件的fileAsset,
里面的两个属性拼一下就能得到绝对路径
更多关于HarmonyOS 鸿蒙Next openHarmony 使用媒体库接口 '@ohos.multimedia.mediaLibrary' 是否能获取到图片的绝对路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这个路径好像在我这个不对 照片无法展现,
你好,由于系统安全的限制,web组件传入html无法直接使用系统路径对应的图片资源,如果想使用系统内的图片可以将图片转为base64码然后传给html进行展示。这里对媒体库的图片展示进行示例:
// 引入fileio
import fileio from '@ohos.fileio'
// 引入mediaLibrary
import mediaLibrary from '@ohos.multimedia.mediaLibrary'
// 获取mediaLibrary对象, getContext全局方法获取应用上下文
let mediaTest = mediaLibrary.getMediaLibrary(getContext());
// 筛选条件
let fileKeyObj = mediaLibrary.FileKey
let imagesfetchOp = {
selections: fileKeyObj.DISPLAY_NAME + ' =?',
selectionArgs: ["IMG_radiance.jpg"],
order: fileKeyObj.DATE_ADDED + " DESC"
};
// getFileAssets 方法获取图片集合
let fetchFileResult = await mediaTest.getFileAssets(imagesfetchOp);
// getFirstObject 获取具体某一个图片的对象
let fileAsset = await fetchFileResult.getFirstObject();
// fileAsset open方法获取文件id
let fd = await fileAsset.open('Rw')
// 创建buffer数组
let buf = new ArrayBuffer(4096);
// fileio read方法读文件
let readOut = await fileio.read(fd, buf);
// 将文件内容转为Uint8Array
let arr = new Uint8Array(readOut.buffer)
// 将Uint8Array 转为 base64字符串
let base = new util.Base64();
let str = base.encodeToStringSync(arr);
//使用WebController将对象注册到html页面的window对象上
this.webController.registerJavaScriptProxy({
object: {
toString: function(){
return str;
}
},
name: "mediaLibraryImage",
methodList: ["toString"],
});
// 关闭fileAsset避免读取完成之后无法再读取
await fileAsset.close(fd)
//html 中使用注册的toString方法拿到base64字符串并赋值给图片的src属性
let src = mediaLibraryImage.toString();
img.src = src;
这里简略的描述了大概的一个过程,代码直接拷贝无法使用,在应用按照整个过程理解了就能成功展示。
在HarmonyOS 鸿蒙Next openHarmony系统中,使用媒体库接口@ohos.multimedia.mediaLibrary
来获取图片的绝对路径是可能的,但具体实现方式依赖于该接口提供的API及其权限设置。
@ohos.multimedia.mediaLibrary
接口主要用于访问和管理设备上的媒体文件,包括图片、音频和视频等。通过该接口,你可以查询媒体文件的信息,如文件名、MIME类型、大小以及存储位置等。通常,这些位置信息是以URI(统一资源标识符)形式提供的,而不是直接的绝对路径。
然而,在某些情况下,你可能能够通过URI解析出图片的绝对路径。这取决于URI的格式和设备的文件系统结构。如果URI包含了足够的信息(如文件系统的根目录和相对路径),那么你可以尝试将其转换为绝对路径。
但需要注意的是,直接获取和使用绝对路径可能会受到应用权限和安全策略的限制。因此,在开发过程中,建议遵循openHarmony的官方文档和API指南,以确保你的应用能够正确地访问和管理媒体文件。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,