HarmonyOS 鸿蒙Next创建ImageBitmap时的路径

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next创建ImageBitmap时的路径

new ImageBitmap(“resources/base/media/ic_analyst_shou.png”)

我在一个hsp A中,是这样创建ImageBitmap对象的,以前这个图片是放在一个har中的,entry依赖了A和har,所以这样子可以访问到。

但是现在图片从har中挪到了hsp B中,entry依赖了A和B,这样子就访问不到了,请问路径要怎样修改,才能在hsp A 中访问到hsp B中的图片。

2 回复

bundle相同,跨module访问 通过createModuleContext(moduleName)接口创建同应用中不同module的上下文,获取resourceManager对象后,调用不同接口访问不同资源。 例如: getContext.createModuleContext(moduleName).resourceManager.getStringByNameSync(‘app.string.XXX’)

更多信息请参考resourcemanager的使用方式 https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5

具体demo可以参考:

let resource: resourceManager.Resource = {
  bundleName: "com.example.test",
  moduleName: "entry",
  id: $r('app.media.app_icon').id //需要更改为自己的
};

const context: Context = getContext(this)
let imageArray = context.resourceManager.getMediaContentSync(resource) // 获取图像资源
let splitBuff1 = imageArray.slice(0, imageArray.byteLength / 2) // 分片
let splitBuff2 = imageArray.slice(imageArray.byteLength / 2)
const imageSourceIncrementalSApi: image.ImageSource = image.CreateIncrementalSource(new ArrayBuffer(imageArray.byteLength));
imageSourceIncrementalSApi.updateData(splitBuff1, false, 0, splitBuff1.byteLength).then(() => {
  imageSourceIncrementalSApi.updateData(splitBuff2, true, 0, splitBuff2.byteLength).then(() => {
    let pixelMap = imageSourceIncrementalSApi.createPixelMapSync()
    let imageInfo = pixelMap.getImageInfoSync()
    console.info('Succeeded in creating pixelMap')
  }).catch((error : BusinessError) => {
    console.error(`Failed to updateData error code is ${error.code}, message is ${error.message}`)
  })
}).catch((error : BusinessError) => {
  console.error(`Failed to updateData error code is ${error.code}, message is ${error.message}`)
})

更多关于HarmonyOS 鸿蒙Next创建ImageBitmap时的路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,创建ImageBitmap对象时,路径的指定通常涉及资源文件的定位。鸿蒙系统提供了多种方式来引用资源文件,包括但不限于文件系统路径、资源包(HAP)内的路径等。

对于文件系统路径,你可以直接使用文件的绝对路径或相对路径。例如,如果你的图片位于设备的存储目录中,你可以这样指定路径:

// 假设图片位于设备的"Pictures"目录下,文件名为"example.jpg"
std::string imagePath = "/storage/emulated/0/Pictures/example.jpg";
ImageBitmap imageBitmap(imagePath);

对于资源包内的资源,你需要使用资源引用路径。这通常是在HAP包的resources目录下定义的资源文件。鸿蒙系统提供了资源ID来访问这些资源,而不是直接使用文件系统路径。例如,如果你的图片资源在resources/rawfile目录下,你可以通过资源ID来获取它:

// 假设资源ID为R.raw.example_jpg
int resourceId = R::raw::example_jpg;
ImageBitmap imageBitmap(resourceId);

请注意,上述代码示例是基于C++的伪代码,用于说明路径的指定方式。实际开发中,你需要根据鸿蒙系统的API文档和具体的开发环境来调整代码。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部