微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么带有“LOW”纠错功能的二维码,当给定 1/5 缩放标志时效果很好,但当给定 1/8 缩放标志时,其负载会改变

如何解决为什么带有“LOW”纠错功能的二维码,当给定 1/5 缩放标志时效果很好,但当给定 1/8 缩放标志时,其负载会改变

我正在编写一个应用程序来生成和读取 QR 以传递数据。 QR 内容是 base64 编码的二进制文件(为此我将其称为 payload

有效载荷很长(答案不应该试图减少有效载荷的长度)并且内容是专有的。有效载荷的长度是可变的(但不应超过此问题中提供的示例长度的 1.5 倍)。 QR 设置设置为 LOW 纠错(我使用 Endroid\QrCode PHP 库来生成它)。

当我在二维码添加徽标/图标时,我缩放徽标以填充图像 (QR) 高度的 1/5(因此,如果最终二维码为 1000x1000,则徽标将为 200x200,从 (400,400 ) 直到 (600,600) 坐标)。这是一个插图。

1_per_5_illust

有一天,我将缩放比例更改为 QR 高度的 1/8(因此,如果最终 QR 码为 1000x1000,则徽标将为 125x125,从 (438,438) 坐标开始到 (563,563) 坐标)。这是一个插图。

1_per_8_illust

1/5 比例二维码运行良好(系统从大约 4-5 个月前开始运行,每个工作日每天读取 300-1000 个二维码,每个周末约 50-200 个二维码(粗略的最低估计是4x20x300=24.000 QR 码至今已读取)。

但出于某种原因,当我使用 1/8 缩放徽标时,QR 码有时不起作用(有效载荷已损坏)(并非总是如此,但在 60-80% 的情况下)。我知道它已损坏,因为有效载荷可以(在某种程度上)由读者通过哈希验证。它也是一个非常关键的业务应用程序,所以当它不起作用时我们会收到很多抱怨。

现在我知道如果有一个有效的解决方案,我应该做有效的(1/5 比例)。但我不禁好奇为什么会发生这种现象。

这是生成二维码示例。两个 QR 都包含完全相同的数据(相同的 base64 二进制)。出于隐私原因,二维码中的标志被审查/隐藏。

QR 阅读器正在使用此示例 https://www.sitepoint.com/create-qr-code-reader-mobile-website/代码沙箱 https://codesandbox.io/s/qr-code-scanner-ilrm9?file=/src/qrCodeScanner.js

在该页面中,他们说:“要读取二维码,我们将使用 ZXing 编写的基于 Java 的 JavaScript portimage processing library。JavaScript 版本由 Lazar Laszlo 移植。 "

这是 1/5 比例的徽标 QR。这个按预期工作。负载的 CRC 哈希值为 44340d08。有效载荷是

VGVTcEhjR2RUVWhXMVZsb3ljbVVMWlBldGk2Qm5vRknxMi9nT3N3QUxZR2c5Znc5L2daYTExNCthOGhBZnMra0ZJa1o1RjJDYi9Mekd5V3lzaW82QmxURjNveHhNow5Yc0JwYU11RVpZeW9RaGxleWY5YkRlT0JlNnI2ZDhYbzFmMFY2QTZWU0EvbnpBTWJ1dElwVGcrZlQ1TE8ySmt6R1lHaXZ4bjJXUE9nTGQvcEJPRWFBeXZRNVJQYjdwTHBSbHprYzdReEwwR1N1QitBdGZWaTdrQT09

1_per_5_working

这是 1/8 比例的徽标 QR。这个不起作用(我猜有效载荷已损坏)。负载的 CRC 哈希值为 a500ee11。有效载荷是

VGVTcEhjR2RUVWhXMVZsb3ljbVVMWlBldGk2Qm5vRknxMi9nT3N3QUxZP²c5Znc5L2daYTExNCthOGhBZnMra0ZJa1o1RjJDYi9Mekd5V3lzaW82QmxURjNveHhNow5Yc0JwYU11RVpZeW9RaGxleWY5YkRlT0JlNnI2ZDhYbzFmMFY2QTZWU0EvbnpBTWJ1dElwVGcrZlQ1TE8ySmt6R1lHaXZ4bjJXUE9nTGQvcEJPRWFBeXZRNVJQYjdwTHBSbHprYzdReEwwR1N1QitBdGZWaTdrQT09

1_per_8_not_working

我注意到 1/8 中似乎有一个上标二(方形符号)在 UxZP 附近不起作用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。