前言
无网络环境下传输文件又有了一个新的选择:使用二维码。无需互联网、蓝牙、WIFI、NFC等,所有数据都可通过相机镜头传输。
项目地址
https://github.com/sz3/libcimbarhttps://github.com/sz3/libcimbar
实现方式
简单来说就是将文件转化为图标矩阵码,用其他设备扫码进行传输。
libcimbar: 颜色图标矩阵条形码
Behold: 一种用于气隙数据传输的实验性条形码格式。
它只需使用计算机显示器和智能手机摄像头即可维持 106 KB/s的速度传输!
操作步骤
编码器将动画条形码输出到计算机或智能手机屏幕上:
-
打开 https://cimbar.org/选择需要传输的文件 (网页端就是一个html文件,无网络环境下浏览器打开也能正常使用)
-
解码器是一个使用手机摄像头读取动画条形码的手机应用程序:手机打开APP,对准屏幕,传输开始会出现进度条
原理
cimbar 是一种高密度 2D 条形码格式。数据存储在彩色图块网格中 -- 根据选择的图块以及选择的颜色来绘制图块,对位进行编码。对数据应用 Reed Solomon 纠错,以解释视频 -> 数字解码的有损性质。预计错误率低于 1%,并得到纠正。
网格上每个图块(位置)有 16 个可能的符号,每个图块编码 4 位。此外,网格上的每个位置可以编码 2-3 个颜色位,这意味着每个图块最多总共 7 个位。
libcimbar 为优化实现,包括一个基于 fountain 代码 (wirehair) 和 zstd 压缩构建的文件编码的简单协议。最大 33MB 的文件(压缩后)被编码为一系列 cimbar 代码,这些代码可以输出为图像或实时视频源。一旦成功解码了足够多的不同图像帧,文件将成功重建和解压缩。即使图像的接收顺序不正确,或者某些图像已损坏或丢失,也是如此。
备注
-
1. 网页端html文件下载:https://github.com/sz3/libcimbar/releases
-
2. Android APP下载:https://github.com/sz3/cfc/releases