我越来越多地使用QR码来传输二进制信息,例如图像,因为每当我演示我的应用程序时,它都会发生在WiFi或3G / 4G无效的情况下。
我想知道是否可以将二进制文件拆分成多个部分以便由一系列QR码编码?
这会像分割文本文件一样简单,还是需要某种复杂的数据一致性检查?
答案 0 :(得分:6)
是的,您可以将任意文件转换为一系列QR码, 类似于Books2Barcodes。
编码数据太大而不适合一个QR码的标准方法是使用QR码标准的"Structured Append Feature"。 唉,我听说大多数QR编码器或解码器 - 例如zxing--目前还不支持生成或读取使用结构化附加功能的一系列条形码。
QR码已经具有非常强大的内部纠错功能。
如果幸运的话,也许可以使用“split
”实用程序拆分文件
分成足够小的部分,以适应易于阅读的QR码,
然后在(希望)正确的顺序扫描它们并使用“cat
”重新组装它们,
可能适合您的申请。
答案 1 :(得分:2)
您肯定可以在QR码中存储大量数据; it can store 2953 bytes of data,几乎是源自以太网网络的标准TCP / IP数据包的两倍,所以功能非常强大。
您需要为每个QR代码定义一些标头,以描述其在重建数据所需的流中的位置。它会像filename chunk 12 of 96
一样,虽然编码比纯文本更好。 (文件名为8个字节,块号和块总数各为1个字节 - 最多256个QR码,一个简单的十字节答案,每个代码仍然留下2943个字节。)
您可能还希望使用某种形式的forward error correction(例如erasure codes)来编码足够的冗余数据,以便能够透明地处理错误读取单个QR码或整个丢失的QR码好。虽然您可以使用existing library, such as for Reed-Solomon codes来提供修复QR码内错误读取的功能,但完全处理丢失的QR码可能需要您付出更多努力。
使用删除代码当然会减少您可以传输的数据量 - 而不是所有753,408字节(256 * 2943),您的最终图像只能有512k或384k甚至更少 - 具体取决于你选择的码率。
答案 2 :(得分:1)
我认为这在理论上是可行的,就像分割文本文件一样简单。但是,您可能需要设计某种标题以了解数据是多部分的,并确保不管扫描顺序如何,可以正确地将不同部分合并在一起。
我假设QR阅读器库返回原始二进制数据,您将把它转换为您想要的任何形式。
答案 3 :(得分:0)
如果要自动创建和传输,请参见
注意-我也没用过。