HarmonyOS 二维码显示和导出base64

HarmonyOS
1天前
浏览
收藏 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 ''
}

将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);
})
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 二维条码扫描识别
595浏览 • 1回复 待解决
HarmonyOS如何无感知扫描二维
357浏览 • 1回复 待解决
HarmonyOS 二维生成的demo
227浏览 • 2回复 待解决
HarmonyOS 支持扫描二维吗?
375浏览 • 1回复 待解决
二维扫描三方库推荐
170浏览 • 1回复 待解决
HarmonyOS h5加载二维屏幕变亮
0浏览 • 1回复 待解决
Canvas组件实现二维中心内嵌图标
948浏览 • 1回复 待解决
HarmonyOS扫描二维的方案是什么?
2068浏览 • 1回复 待解决
openHarmony-Api8项目,如何生成二维
958浏览 • 0回复 待解决
HarmonyOS 图片操作,合成后导出base64
228浏览 • 1回复 待解决