HarmonyOS 二维码显示和导出base64

HarmonyOS
2024-12-23 16:51:24
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
fox280

参考示例如下:generateBarcode.createBarcodetg生成二维码pixelMap对象,再将pixelMap转为base64字符串。

let width = 300
let options: generateBarcode.CreateOptions = {
  scanType: scanCore.ScanType.QR_CODE,
  height: width,
  width: width
}
// 码图生成接口,成功返回PixelMap格式图片
generateBarcode.createBarcode(url, options, (error: BusinessError, pixelMap: image.PixelMap) => {
  if (error) {
    QDLogUtils.error(`createBarcode error ${JSON.stringify(error)}`);
  } else {
    QDStringUtils.pixelMapToBase64String(pixelMap).then((str) => {
      this.toSuccessCallback(`data:image/jpeg;base64,${str}`)
    })
  }
})

async pixelMapToBase64String(pixelMap: image.PixelMap): Promise<string> {
  const imagePackerApi: image.ImagePacker = image.createImagePacker();
  let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 30 };
  try {
    let readBuffer = await imagePackerApi.packing(pixelMap, packOpts)
    let bufferArr = new Uint8Array(readBuffer)
    let str = new util.Base64Helper().encodeToStringSync(bufferArr)
    return str
  } catch (err) {
    QDLogUtils.error(`pixelMapToBase64String err = ${err}`)
    }
   return ''
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

将resource中图片转base64:

1、resource中图片转imagesource:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-decoding-V5#ZH-CN_TOPIC_0000001847052324__开发示例-对资源文件中的图片进行解码

2、imagesource先编码,再转base64:

const imagePackerApi = image.createImagePacker();
let packOpts: image.PackingOption = { format: "image/jpeg", quality: 100 };
imagePackerApi.packing(this.imagesource, packOpts).then(async (data: ArrayBuffer) => {
  // data 为打包获取到的文件流,写入文件保存即可得到一张图片
  if (data) {
    const imageSource: image.ImageSource = image.createImageSource(data);
    let decodingOptions: image.DecodingOptions = {
      editable: true,
      desiredPixelFormat: 3,
    }
    // this.pixmap2= await imageSource.createPixelMap(decodingOptions)
    let buf: buffer.Buffer = buffer.from(data);
    let baseStr: string = buf.toString('base64', 0, buf.length);
    console.log(JSON.stringify(baseStr))
    //送显
    this.imgStr = "data:image/jpeg;base64," + baseStr;
  }
}).catch((error: BusinessError) => {
  console.error('Failed to pack the image. And the error is: ' + error);
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
分享
微博
QQ
微信
回复
2024-12-23 20:34:10
相关问题
HarmonyOS 二维生成失败
794浏览 • 1回复 待解决
HarmonyOS zxing二维
1011浏览 • 1回复 待解决
HarmonyOS 二维条码扫描识别
1337浏览 • 1回复 待解决
HarmonyOS如何无感知扫描二维
1180浏览 • 1回复 待解决
HarmonyOS 支持扫描二维吗?
1174浏览 • 1回复 待解决
HarmonyOS 二维生成的demo
1165浏览 • 2回复 待解决
二维扫描三方库推荐
957浏览 • 1回复 待解决
HarmonyOS APP可以生成二维,扫安装
1591浏览 • 1回复 待解决
HarmonyOS h5加载二维屏幕变亮
845浏览 • 1回复 待解决
HarmonyOS扫描二维的方案是什么?
2993浏览 • 1回复 待解决
Canvas组件实现二维中心内嵌图标
1580浏览 • 1回复 待解决
openHarmony-Api8项目,如何生成二维
1697浏览 • 0回复 待解决