HarmonyOS鸿蒙Next中Scan Kit的自定义扫码接口能否保存识别成功那一帧的图像数据

HarmonyOS鸿蒙Next中Scan Kit的自定义扫码接口能否保存识别成功那一帧的图像数据 使用Scan Kit的自定义扫码接口实现扫码功能,若想在识别成功后,想保存成功那一帧的图像数据,该如何操作?

使用的接口:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/scan-customscan

3 回复

方案1:使用start接口,当扫描成功时,保存frameCallback获取的YUV图像,将其作为识别成功的那一帧图片。需要注意的是,扫描成功使用的帧通常是frameCallback的前几帧。

方案2:通过Camera Kit启动预览流结合Scan Kit的图像识码接口进行解码。当扫码成功时,直接保存该帧图片。如何使用Camera Kit启动流,请参考示例代码中的图像识码功能。

总结:方案1适用于保存的帧和成功识别的码图相似的场景,而方案2则适用于需要保存的帧和成功识别的码图完全一致的场景。

更多关于HarmonyOS鸿蒙Next中Scan Kit的自定义扫码接口能否保存识别成功那一帧的图像数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS Next的Scan Kit自定义扫码接口支持保存识别成功的图像数据。通过实现CustomScanProcessor接口,在onResult回调中可获取包含图像数据的ScanResult对象,使用getOriginalBitmap()方法直接获取完整帧的Bitmap数据。该图像为识别成功的原始画面,分辨率和质量与扫码时捕获的帧一致。图像数据可直接用于本地存储或进一步处理,无需额外截图操作。

在HarmonyOS Next中,使用Scan Kit自定义扫码接口时,可以通过onSuccess回调中的result参数获取识别成功的图像帧数据。具体操作如下:

  1. 在自定义扫码配置中,启用图像数据返回选项:
const scanConfig: scan.CustomScanConfig = {
  isReturnBitmap: true // 设置为true以返回图像数据
};
  1. onSuccess回调中获取图像数据:
scan.on('success', (result: scan.ScanResponse) => {
  if (result.bitmap) {
    // 获取到识别成功时的图像帧
    const frameBitmap: image.PixelMap = result.bitmap;
    // 此处可添加图像保存逻辑
  }
});
  1. 保存图像数据: 使用@ohos.multimedia.image模块的API将PixelMap保存为文件:
import image from '@ohos.multimedia.image';

// 将PixelMap保存为JPEG文件
async function saveBitmap(pixelMap: image.PixelMap) {
  const imagePackerApi = image.createImagePacker();
  const packOptions: image.PackingOption = { format: "image/jpeg", quality: 100 };
  const arrayBuffer = await imagePackerApi.packing(pixelMap, packOptions);
  // 使用fileIO将arrayBuffer写入文件
}

注意:需要申请ohos.permission.READ_IMAGESohos.permission.WRITE_IMAGES权限,并在module.json5中配置。

通过以上步骤即可在扫码成功后保存识别帧的图像数据。

回到顶部