HarmonyOS 关于image.PixelMap跨页面流转的问题

我在一个页面获取了一个image.PixelMap对象(该对象是正常的在当前页面可以正常显示),之后把这个image.PixelMap对象通过如下方法封装流转到其它页面:

const _config: Record<string, image.PixelMap> = {
  'config': pixelmap
}
let storage: LocalStorage = new LocalStorage(_config);

在其它页面获取方式:

@Entry({ routeName: MUDialogContentWindowName, storage: LocalStorage.getShared() })
@Component
struct MUCustomContent {

  @LocalStorageProp('config') config: SignatureConfirmAlertConfig | undefined = undefined
  build(){
    Column(){
      Image(this.testImage)
        .width(200)
        .height(200)
        .backgroundColor(Color.Red)
    }
  }
}

异常的问题是:this.testImage打印有值但是Image未展示图片,排查了不知道为什么

我在当前界面打印this.testImage有值,但是图片就是不显示,我在当前界面通过Image展示一个在线图片可以展示,不知道为什么this.testImage有值缺无法展示出来

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

在LocalStorage中使用@LocalStorageProp变量装饰器是有限制的,允许装饰的变量类型:Object、class、string、number、boolean、enum类型,以及这些类型的数组。API12及以上支持Map、Set、Date类型。不支持装饰PixelMap类型。详细请参考如下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-localstorage-V5#装饰器使用规则说明

建议将PixelMap类型转变成base64字符串,再进行操作,示例代码如下:

let packOpts : image.PackingOption = { format:"image/jpeg", quality:98 };
let imagePackerApi = image.createImagePacker();
imagePackerApi.packing(this.pixelMap, packOpts).then( (data : ArrayBuffer) => {
  let base64Str = buffer.from(data).toString('base64')
  this.resultBase64Str="data:image/png;base64,"+base64Str
  console.log('resultBase64Str = ', this.resultBase64Str)
}).catch((error : BusinessError) => {
  console.error('Failed to pack the image. And the error is: ' + error);
})

读取的时候Image组件可以直接使用,如 Image(this.resultBase64Str)

分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS image.PixelMap拉伸变形
19浏览 • 1回复 待解决
聊一聊关于流转问题咨询
6857浏览 • 1回复 待解决
谈一谈关于端迁移问题
5908浏览 • 2回复 待解决
关于Image组件两个问题
427浏览 • 1回复 待解决
关于Image组件加载网络图片问题
639浏览 • 1回复 待解决
HarmonyOS 关于页面架构封装问题
63浏览 • 1回复 待解决
Native Image模块API-OH_PixelMap_CreatePixelMap
1768浏览 • 1回复 待解决
HarmonyOS 模块页面跳转
23浏览 • 1回复 待解决