HarmonyOS 如何转base64?

目前原生使用image组件可以正常加载pixelMap,但是现在需要把显示的pixelMap资源转成base64后传给前端,前端进行解码后显示图片,pixelMap如何转base64?

阅读 545
1 个回答

参考示例如下:

async getImageBase64WithPixelMap(pixelMap:PixelMap): Promise<string> {
  const imagePackerApi = image.createImagePacker();
  // 设置打包参数
  // format:当前仅支持打包为JPEG、WebP 和 png 格式
  // quality:JPEG 编码输出图片质量
  // bufferSize:图片大小,默认 10M
  const packOpts: image.PackingOption = { format: "image/jpeg", quality: 100 };
  let imageBuffer: ArrayBuffer = new ArrayBuffer(1);
  let resultBase64Str = ''
  try {
  // 图片压缩或重新打包
  imageBuffer = await imagePackerApi.packing(pixelMap, packOpts);
  let base64Str = buffer.from(imageBuffer).toString('base64')
  resultBase64Str="data:image/jpeg;base64,"+base64Str

} catch (err) {
  console.error(`Invoke getImageArrayBufferWithUri failed, err: ${JSON.stringify(err)}`);
}
  return resultBase64Str;
}