首页 > 解决方案 > 在 ZXing 生成的 QR 码上删除边距/边框空间并将 ErrorCorrectionLevel 设置为“H”?

问题描述

我想生成没有边距/边框空间并ErrorCreationLevel.H使用 ZXing 的 QR 码,如下所示:

Map<EncodeHintType, Object> hints = new EnumMap<>(EncodeHintType.class);
hints.put(com.google.zxing.EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.put(com.google.zxing.EncodeHintType.MARGIN, 0);

QRCodeWriter writer = new QRCodeWriter();

writer.encode("rasool", BarcodeFormat.QR_CODE, 200, 200, hints);

通过这种方式,生成的二维码包含默认的边距/边框空间,可以轻松扫描,但我希望它不应该有任何边距/边框空间。

而当我评论与 相关的行时ErrorCreationLevel,生成的二维码没有任何边距/边框空间,但无法用智能手机和扫描仪软件扫描。

我使用的是 ZXing 3.4.0版本。

我怎么解决这个问题?

标签: javaqr-codebarcodezxing

解决方案


毫无疑问,您的扫描困难与参考解码算法要求静区(“边缘”)保持不变有关,因此扫描仪无法检测、构图和二值化符号。

纠错级别有助于从二值化符号中恢复丢失/损坏的信息,但如果没有静区,您甚至可能无法在解码过程中走得这么远。


推荐阅读