【问题标题】:QR code compression二维码压缩
【发布时间】:2012-06-14 11:19:36
【问题描述】:

是否可以在 QR 码中存储大约 20 000 个字符? (或者更多?http://blog.qr4.nl/page/QR-Code-Data-Capacity.aspx

我只想存储 ascii 符号(带有额外破折号的字符和数字等)。

据我所知,可以以 80-98% 的比例压缩不复杂的文本,这听起来很有希望:http://www.maximumcompression.com/index.html

你有更多的经验吗?感谢分享!

【问题讨论】:

  • 不是您想要的答案,而是:如果您想在二维条码中放入大量数据,也许您应该看看 datamatrix。

标签: text compression zip qr-code


【解决方案1】:

如果您的问题是:“可能在 QR 码中存储 20K 个字符吗?”,那么答案是,这是可能 em>。

如果您的问题是:“是否有可能保证您将始终能够在 QR 码中存储 20K 个字符压缩?”,答案是 不。由于pigeonhole原则,无法保证。

如果您的问题是:“是否有一个“舒适区”,其中最大大小为 20K 的文本输入很可能适合 QR 码?”,正确答案是:这取决于在您的输入数据上。一个更有风险的答案是:如果您正在处理“普通文本”数据,例如书籍内容,您可能要求的太多了。

你提到的 80-90% 的压缩率是可能的,因为输入数据非常大(几 MB),并且解压缩算法非常慢。对于“小”输入数据,例如 20K 字符,“普通文本”的压缩率更可能在 50-70% 范围内,具体取决于算法强度(例如 PPM,非常适合此类输入数据)。

显然,如果您的输入数据是一种“日志文件”,具有大量重复,那么是的,压缩率 > 95% 很容易获得。

但压缩比并不是唯一需要考虑的因素。对于“现实生活”中的使用,您还必须考虑 QR 尺寸,以及 QR 打印的合理校正水平。至少在现实生活场景中,押注“最大容量和尽可能低的修正”是一个相当错误的赌注。您必须询问周围的人以了解您的 QR 码的“合理限制”是什么。最有可能的是,打印功能会妨碍您,您将不得不接受低于最大值的东西。

最后一点,不要忘记压缩数据是“二进制”,而不是“字母数字”。因此,您的 QR 码的最终容量位于最后一列。这比“字母数字”列要少得多。

【讨论】:

  • 感谢您的反馈。青色,我需要承认 - 您完全正确地了解“压缩”文本文件的二进制状态。我忘记了那个小细节。 ;) 我想插入包含两列或三列“名称|值”、“名称|值|值”的表。两列都会有字符和数字。最多 300-400 条记录。
  • 如果您想知道压缩比,您可以使用可用的算法在您的桌子上进行一些测试。例如,众所周知,7zip 在“结构化”数据上具有相当好的性能。这将提供第一个评估级别。
【解决方案2】:

QR 码对字母数字数据具有特殊的编码模式(仅大写,加上数字和一些符号)。它每个字符使用少于 8 位,在这种模式下最多可以存储 4,296 个字符。

这应该接近最优。对于更简单的数据(如所有 alpha),像 gzip 这样的压缩算法可能能够实现每字节更少的位数。当然,没有标准阅读器会这样解释压缩后的有效负载。只有特殊的读者才能做到。

您可以通过这种方式在 QR 码中获取 5 倍的数据吗?不,几乎可以肯定不会,除非是像 20,000 个“a”这样的微不足道的情况。

即使可以,它也会创建一个大而复杂的二维码。在实践中,任何超过几百字节的东西都很难扫描。最大的版本 40 在现实世界中毫无用处。甚至是第 20 版。

【讨论】:

  • 肖恩,感谢您的反馈 :) 我正在考虑构建自己的应用程序来读取和解压缩“zipQR”。
【解决方案3】:

实际上,当您想使用 QR 存储大量数据时,您只需存储一个指向数据位置的 URL。

当您必须支持现实生活中的设备时,理论上可能的情况与实际可能的情况大不相同。祝你好运,用低端智能手机摄像头扫描高于版本 10(57x57 模块)的任何东西。

【讨论】:

  • URL/Pointer 看起来比我之前想象的更有希望。感谢您的回复@NiloVelez。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多