HarmonyOS 二维码图片或者resource中图片转base64,传给RN

1、HarmonyOS中有二维码地址,使用QRCode显示二维码,如何将二维码图片转为base64传给RN?

2、如何将resource中图片转base64,传给RN?

HarmonyOS
2024-08-13 16:07:55
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

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, 
    } 
    let buf: buffer.Buffer = buffer.from(data); 
    let baseStr: string = buf.toString('base64', 0, buf.length); 
    console.log('66666' + 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
微信
回复
2024-08-13 21:22:51
相关问题
HarmonyOS 二维条码扫描识别
299浏览 • 1回复 待解决
HarmonyOS如何无感知扫描二维
229浏览 • 1回复 待解决
HarmonyOS 支持扫描二维吗?
192浏览 • 1回复 待解决
js canvasbase64编码图片不全
10527浏览 • 1回复 待解决
怎么把PixelMap图片BASE64
9179浏览 • 1回复 待解决
HarmonyOS如何将图片Base64
695浏览 • 1回复 待解决
HarmonyOS扫描二维的方案是什么?
1876浏览 • 1回复 待解决
Canvas组件实现二维中心内嵌图标
672浏览 • 1回复 待解决
如何base64换成图片
10048浏览 • 2回复 待解决
openHarmony-Api8项目,如何生成二维
799浏览 • 0回复 待解决
HarmonyOS 图片进行base64编码报错
424浏览 • 1回复 待解决
如何将PixelMap图片base64字符串?
330浏览 • 1回复 待解决
HarmonyOS Image如何显示base64图片
232浏览 • 1回复 待解决