HarmonyOS 鸿蒙Next API 12使用活体检测 获取到的mPixelMap如何转成base64

发布于 1周前 作者 zlyuanteng 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next API 12使用活体检测 获取到的mPixelMap如何转成base64

API 12使用活体检测,返回检测结果,获取到的mPixelMap,如何转成base64,我们是需要将活体检测结果(头像图片),上送后台,进行公安联网检测

2 回复

PixelMap转换成base64可以先使用imagePacker将pixelMap压缩后再进行base64,若要实现无损压缩,将PixelMap压缩成PNG,即调用imagePacker时,

let packOpts: image.PackingOption = { format: ‘image/jpeg’, quality: 100 }; 

参考如下代码: 

async packingPixelMapToBase64(pixelMap: PixelMap){

    // 创建ImagePacker实例

    const imagePackerApi = image.createImagePacker();

    // 设置打包参数

    // format:图片打包格式,只支持 jpg 和 webp

    // quality:JPEG 编码输出图片质量

    // bufferSize:图片大小,默认 10M

    const packOpts: image.PackingOption = { format: “image/jpeg”, quality: 100 };

    imagePackerApi.packing(pixelMap, packOpts).then((data: ArrayBuffer) => {

      let buf: buffer.Buffer = buffer.from(data);

      let base64  = ‘data:image/jpeg;base64,’ + buf.toString(‘base64’, 0, buf.length);

      console.info('base64: ’ + base64);

    })

  }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

在HarmonyOS鸿蒙Next API 12中,若要将活体检测获取到的mPixelMap转换成Base64编码,你可以按照以下步骤进行操作:

  1. 获取Bitmap对象:首先确保mPixelMap可以转换为Bitmap对象,通常可以通过调用PixelMaptoBitmap()方法实现。

  2. 压缩Bitmap为ByteArray:将Bitmap对象压缩成字节数组。这可以通过Bitmapcompress方法完成,通常使用PNG或JPEG格式进行压缩。

  3. 编码ByteArray为Base64:使用Java内置的Base64编码工具类(如java.util.Base64)将字节数组编码为Base64字符串。

示例代码如下:

Bitmap bitmap = mPixelMap.toBitmap();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String base64String = Base64.getEncoder().encodeToString(byteArray);

注意,压缩质量和格式可以根据需求调整。

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

回到顶部