方案一:使用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绘制到二维码上