头图

目录

  • 前言
  • 码图技术简介
  • 使用场景
  • 约束与限制
  • 实现字节数组生成码图
  • 自定义码图
  • 结束语

    前言

    在移动应用开发中,码图(二维码和条形码)的生成是一个常见需求,尤其在需要快速分享信息、数据验证和支付处理的场景中,而且越来越多的移动端应用开发都使用了扫码功能,所以码图的生成也是必备的能力。而且HarmonyOS提供了强大的API支持,使得开发者可以轻松实现从字节数组生成码图的功能,让大家在鸿蒙原生开发中有了更加强大的技术支持。那么本文就来详细介绍如何在HarmonyOS应用中实现字节数组到码图的转换,包括技术选型、实现步骤和代码示例,方便大家了解使用。

    码图技术简介

    先来了解一下码图技术概念,码图生成能力支持将字节数组转换为自定义格式的码图。码图是一种将数据编码为图形的方式,便于扫描和自动识别。二维码因其高密度信息存储和易于生成的特点,比条形码更为流行。在HarmonyOS中,生成码图通常涉及以下步骤:
    1.集成码图生成库:选择一个合适的库来生成二维码或条形码。
    2.配置码图参数:设置码图的类型、编码内容、尺寸等参数。
    3.生成码图:使用库提供的API生成码图。
    4.显示和使用码图:将生成的码图显示在界面上或用于其他用途。

    使用场景

    再来介绍一下具体的码图生成使用场景,码图生成能力支持将字节数组转换为自定义格式的码图,比如调用码图生成能力, 将字节数组转换成交通一卡通二维码使用。

    约束与限制

    关于在HarmonyOS中码图使用的约束和限制,目前只支持QR Code生成,根据纠错水平不同对生成参数有不同的要求,需要特别说明一点,Scan Kit识别该码图内容显示内容为乱码,这种字节数组需要专门的解码器解析,比如地铁闸机,具体的参数限制可参考下面的表格所示:
    image.png
    然后再来介绍一下具体的业务流程图,如下图所示:

    其中,用户向应用发起生成码请求后,传入需要生成的码的信息,包括码的类型、宽高等;应用通过调用Scan Kit的createBarcode接口启动码图生成能力;Scan Kit通过将字节数组转换为码图并返回给应用;应用向用户返回生成码结果。

    实现字节数组生成码图

    接下来就来分享实现字节数组生成码图的具体操作步骤,码图生成根据传参内容直接生成所需码图,需要传入固定参数和可选参数。下面以为调用码图生成能力的createBarcode接口实现码图生成来讲,具体操作步骤如下所示。

    步骤1:导入接口

    首先来导入码图生成接口模块,该模块提供了码图生成的参数和方法,导入方法如下所示:

// 导入码图生成需要的图片模块、错误码模块
import { scanCore, generateBarcode } from '@kit.ScanKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { image } from '@kit.ImageKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { buffer } from '@kit.ArkTS';

步骤2:调用码图生成接口

然后是调用码图生成能力的createBarcode接口实现码图生成,主要是通过Promise方式回调来获取生成的码图,具体操作如下所示:

const TAG: string = 'Create barcode';

@Entry
@Component
struct Index {
  @State pixelMap: image.PixelMap | undefined = undefined
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Button('generateBarcode Promise').onClick(() => {
        this.pixelMap = undefined;
        let content: string =
'0177C10DD10F7768600202312110000063458FD14112345678FFFFD381012610b746365409210201b66636540ad0200020000000000110e617003201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006645fbec664358ECF657CB40693c92da';
        let contentBuffer: ArrayBuffer = buffer.from(content, 'hex').buffer; // 通过包含十六进制字符的字符串创建Buffer
        let options: generateBarcode.CreateOptions = {
          scanType: scanCore.ScanType.QR_CODE,
          height: 400,
          width: 400
        }
        try {
          // 码图生成接口,成功返回PixelMap格式图片
          generateBarcode.createBarcode(contentBuffer, options).then((pixelMap: image.PixelMap) => {
            this.pixelMap = pixelMap;

          }).catch((error: BusinessError) => {

          })
        } catch (error) {
        }
      })
      // 获取生成码后显示
      if (this.pixelMap) {
        Image(this.pixelMap).width(300).height(300).objectFit(ImageFit.Contain)
      }
    }
    .width('100%')
    .height('100%')
  }
}

其他:模拟器操作

字节数组生成码图的功能目前还不支持模拟器调试使用,如果使用模拟器调试调用,会返回错误信息“Emulator is not supported.”

自定义码图

除了上面介绍的基本的码图生成功能,开发使用者还可以根据应用的需求自定义码图行为,比如:

  • 自定义码图样式:改变码图的颜色、边框等样式。
  • 码图尺寸调整:根据需要调整码图的尺寸。

    结束语

    通过字节数组生成码图是HarmonyOS开发中的一项实用功能,它为应用提供了便捷的信息分享和数据验证能力,也是实际开发中必备的常用且重要的技术点。上文对于字节数组生成码图的使用详细介绍,大家应该都了解了如何在HarmonyOS应用中实现字节数组到码图的转换,后面的鸿蒙原生开发中也会很好的去运用相关的操作步骤。随着技术的不断发展,码图生成功能将在HarmonyOS生态中继续扮演重要的角色,给用户带来更加丰富和便捷的体验,让开发者们更好的开发出相关的应用。


nshen
2.2k 声望156 粉丝