如何生成带有Logo且二维码不被遮挡的二维码?
解决二维码被Logo遮挡的问题
你当前使用QrImage组件生成带Logo的二维码时出现遮挡问题,核心原因是Logo尺寸占比过高,超出了当前容错级别的可允许范围。以下是针对性的解决方案:
调整关键参数
- 提升容错级别:将
errorCorrectionLevel改为QrErrorCorrectLevel.H——这是最高容错等级,允许最多30%的区域被遮挡,足以覆盖合理尺寸的Logo。 - 缩小Logo尺寸:把Logo的
size从Size.square(95)调整到Size.square(60)左右,控制Logo占二维码总面积的15%以内,确保在容错范围内。 - 可选:微调Logo位置:如果仍有定位点被遮挡,可通过
offset参数偏移Logo位置,避开二维码的三个角定位块。
修改后的完整代码
QrImage( embeddedImage: const AssetImage('assets/images/444.png'), embeddedImageStyle: QrEmbeddedImageStyle( size: const Size.square(60), // 可选:偏移Logo位置,例如向下偏移10 // offset: const Offset(0, 10), ), backgroundColor: whiteColor, data: widget.data!, version: QrVersions.auto, size: 200.0, errorCorrectionLevel: QrErrorCorrectLevel.H, ),
说明
调整后生成的二维码会直接内嵌Logo,且不会因遮挡导致扫码失效——更高的容错级别会在生成二维码时预留足够的冗余信息,同时缩小的Logo也不会破坏二维码的识别结构。
内容的提问来源于stack exchange,提问作者sandesh shrestha
相关产品推荐
相关产品推荐

