6

我越来越多地考虑使用 QR 码来传输二进制信息,例如图像,因为每当我演示我的应用程序时,它似乎都发生在 WiFi 或 3G/4G 无法正常工作的情况下。

我想知道是否可以将二进制文件拆分为多个部分以通过一系列 QR 码进行编码?

这会像拆分文本文件一样简单,还是需要某种复杂的数据一致性检查?

4

4 回答 4

8

Yes, you could convert any arbitrary file into a series of QR codes, something like Books2Barcodes.

The standard way of encoding data too big to fit in one QR code is with the "Structured Append Feature" of the QR code standard. Alas, I hear that most QR encoders or decoders -- such as zxing -- currently do not (yet) support generating or reading such a series of barcodes that use the structured append feature.

QR codes already have a pretty strong internal error correction. If you are lucky, perhaps splitting up your file with the "split" utility into pieces small enough to fit into a easily-readable QR code, then later scanning them in (hopefully) the right order and using "cat" to re-assemble them, might be adequate for your application.

于 2012-08-16T11:21:16.573 回答
2

您肯定可以在二维码中存储大量数据;它可以存储 2953 字节的数据,几乎是源自以太网的标准 TCP/IP 数据包大小的两倍,因此它非常强大。

您需要为每个 QR 码定义一些标头,以描述其在重建数据所需的流中的位置。它将类似于filename chunk 12 of 96,但以比纯文本更好的方式编码。(文件名 8 个字节,块编号和块总数各 1 个字节 - 最多 256 个 QR 码,一个简单的 10 字节答案,每个代码仍保留 2943 个字节。)

您可能还希望使用某种形式的前向纠错(例如纠删码)来编码足够的冗余数据,以便透明地处理对单个 QR 码或整个缺失 QR 码的误读。虽然您可以使用现有的库(例如 Reed-Solomon 码)来提供修复 QR 码中的误读的能力,但完全处理丢失的 QR 码可能需要您付出更多的努力。

使用纠删码当然会减少您可以传输的数据量——而不是全部 753,408 字节(256 * 2943),最终图像将只有 512k 或 384k 甚至更少可用——取决于您的码率选择。

于 2012-06-02T02:24:42.403 回答
1

我认为这在理论上是可能的,就像拆分文本文件一样简单。但是,您可能需要设计某种标题以了解数据是多部分的,并确保无论扫描顺序如何,不同部分都可以正确合并在一起。

我假设 QR 阅读器库返回原始二进制数据,您将负责将其转换为您想要的任何形式。

于 2012-06-02T01:14:09.260 回答
0

如果您想要自动创建和传输,请参阅

注意 - 我也没有使用过。

另请参阅:如何在不添加到另一个网络的双向链接的情况下从专用网络发布数据 - 安全 StackExchange

于 2019-01-18T01:42:30.190 回答