HarmonyOS 鸿蒙Next Image怎么加载base64?

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

HarmonyOS 鸿蒙Next Image怎么加载base64?

文档上面没有示例,只有这一段说明,能否给个示例?
- 支持Base64字符串6+。格式为data:image/[png | jpeg | bmp | webp];base64, [base64 data], 其中[base64 data]为Base64字符串数据。

2 回复
image显示base64的图片demo如下:
const base64String = `*****************`
[@Preview](/user/Preview)
[@Entry](/user/Entry)
[@Component](/user/Component)
struct ImageBase64 {
  [@State](/user/State) imagestr: string = ''
  base64Image() {
    let begin = 'data:image/jpeg;base64,'
    return begin + base64String
  }
  aboutToAppear(): void {
    this.imagestr = this.base64Image()
  }
  build() {
    Row() {
      Column() {
        Image(this.imagestr)
          .width(300)
          .height(100)
          .backgroundColor(Color.Green)
      }
      .width('100%')
    }
    .height('100%')
  }
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

HarmonyOS 鸿蒙Next Image加载base64格式图片的方法如下:

Image组件支持Base64字符串格式的图片,其格式通常为“data:image/[png|jpeg|bmp|webp];base64,[base64 data]”,其中“[base64 data]”为Base64字符串数据。

要加载base64格式的图片,首先需要将base64字符串解码为字节数组。在Java或Kotlin中,可以使用Base64.Decoder来完成这一步骤,例如:

import java.util.Base64;
byte[] imageBytes = Base64.getDecoder().decode(base64String);

接着,将字节数组转换为PixelMap对象。可以使用PixelMapFactory.createPixelMapFromBytes方法:

import ohos.multimedia.pixelmap.PixelMap;
import ohos.multimedia.pixelmap.PixelMapFactory;
PixelMap pixelMap = PixelMapFactory.createPixelMapFromBytes(imageBytes, width, height, PixelMap.PixelFormat.RGBA_8888);

注意,此处需要知道图片的宽度和高度(width和height),否则可能需要先解析base64字符串的元数据来获取这些信息,或者使用一个默认的尺寸。

最后,将PixelMap对象展示在Image组件上,通过设置Image的PixelMap属性即可。

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

回到顶部