HarmonyOS QRCode在二维码中间加入logo图片?

如题:HarmonyOS QRCode在二维码中间加入logo图片?

阅读 500
1 个回答

方案一:可以使用Stack组件在二维码上叠加logo图标,小尺寸的logo不会影响到二维码的识别。

demo如下:

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

@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(() => {
        // 以QR码为例,码图生成参数
        this.pixelMap = undefined;
        let content: string = 'huawei';
        let options: generateBarcode.CreateOptions = {
          scanType: scanCore.ScanType.QR_CODE,
          height: 400,
          width: 400
        }
        // 码图生成接口,成功返回PixelMap格式图片
        generateBarcode.createBarcode(content, options).then((pixelMap: image.PixelMap) => {
          this.pixelMap = pixelMap;
        }).catch((error: BusinessError) => {
          hilog.error(0x0001, '[generateBarcode]', 'promise error : %{public}s', JSON.stringify(error));
        })
      })

      // 获取生成码后显示
      if (this.pixelMap) {
        Stack({alignContent:Alignment.Center}) {
          Image(this.pixelMap).width(300).height(300).objectFit(ImageFit.Contain)
          Image($r('app.media.startIcon')).width(50).height(50)
        }
      }
    }
    .width('100%')
    .height('100%')
  }
}

方案二:使用zxing三方库来带logo的二维码图片,zxing库地址:https://gitee.com/openharmony-tpc/zxing

使用zxing生成带logo的二维码图片可参考网上的案例 :https://blog.csdn.net/donkor\_/article/details/79799366

可以在生成二维码后使用canvas将logo绘制到二维码上

canvas可参考如下文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-drawing-customization-on-canvas-V5

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进