1

可以将图像覆盖在 QRCode 上并对其进行扫描,因为存在一些冗余。

但是我如何计算我可以隐藏的模块的最大数量以及我仍然拥有哪些冗余?

我看到大多数人只是用 Photoshop 调整他们的代码并尝试使用他们的阅读器:我想动态生成 QRCode 并添加一些任意图像,所以这种手动调整对我不起作用。

4

1 回答 1

4

从维基百科,四个纠错级别启用以下近似级别的纠错恢​​复:

Level L (Low)   7% of codewords can be restored.
Level M (Medium)    15% of codewords can be restored.
Level Q (Quartile)  25% of codewords can be restored.
Level H (High)  30% of codewords can be restored.

对于确切的数字,您需要参考 QR 码规范 (ISO 18004)。

它比这复杂一点。例如,EC 数字不适用于角落的取景器图案。虽然您可以稍微扭曲它们,但对于确切的数量没有硬性限制。

同样,EC 未涵盖 QR 码数据的某些区域,因为它们本身包含 EC 级别和版本信息。这些是右上角和左下角代码周围的区域。他们有不同的 EC 方案并且有一些冗余,但是很难准确地解释你可以破坏多少。

最后,请记住,对于您的徽标所涵盖的任何模块,徽标的明暗度与底层模块匹配的可能性约为 50%(嗯,取决于您的徽标)。所以它不会引入错误。因此,您的徽标损坏的代码字的确切数量取决于徽标和底层二维码模块!

您最好的选择是使用 H 级纠错。然后创建一些失真度越来越高的测试二维码。使用带有调试器的 zxing 之类的库来检测您的样本由于 EC 限制而开始失败的点。然后回退到那个大小的 75%。

对于几乎所有实际情况,这应该是足够的缓冲。

于 2012-06-20T10:42:26.647 回答