HarmonyOS鸿蒙Next中generateBarcode生成的二维码中间如何加logo

HarmonyOS鸿蒙Next中generateBarcode生成的二维码中间如何加logo generateBarcode生成的二维码中间如何加logo?

通过文本生成码图,生成的二维码为纯二维码,如何在这个二维码中间加一个logo?

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/scan-barcodegenerate-V13#section9684181513312


更多关于HarmonyOS鸿蒙Next中generateBarcode生成的二维码中间如何加logo的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

方案一:您可以使用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-V13/arkts-drawing-customization-on-canvas-V13

更多关于HarmonyOS鸿蒙Next中generateBarcode生成的二维码中间如何加logo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用generateBarcode生成二维码时,可以通过BarcodeOptionslogo属性来添加中间logo。具体步骤如下:

  1. 创建BarcodeOptions对象,设置二维码的类型、内容等参数。
  2. 使用PixelMap加载logo图片,并将其赋值给BarcodeOptionslogo属性。
  3. 调用generateBarcode方法生成二维码。

示例代码如下:

import { barcode } from '@ohos.barcode';
import image from '@ohos.multimedia.image';

// 创建BarcodeOptions对象
let options: barcode.BarcodeOptions = {
    type: barcode.BarcodeType.QR_CODE,
    content: 'https://www.example.com',
    logo: null // 初始化为null
};

// 加载logo图片
let imageSource = image.createImageSource('path/to/logo.png');
let pixelMap = await imageSource.createPixelMap();

// 将logo赋值给BarcodeOptions
options.logo = pixelMap;

// 生成带logo的二维码
let barcodeResult = barcode.generateBarcode(options);

通过上述步骤,可以在生成的二维码中间添加logo。

在HarmonyOS鸿蒙Next中,generateBarcode生成的二维码中间添加logo,可以通过以下步骤实现:

  1. 生成二维码:使用generateBarcode生成二维码图片。
  2. 加载logo:将logo图片加载到应用中。
  3. 绘制logo:使用CanvasPixelMap在二维码图片的中心位置绘制logo。
  4. 合并图片:将二维码和logo合并为一张图片。

确保logo大小适中,避免遮挡二维码的关键信息。

回到顶部