README.zh-cn.md
一种用于小型数据传输的实验性条形码。
解码速度在 850Kbit/s 左右(约106 KB/s),只需一个电脑显示器和手机摄像头!
<p align="center"> </p>编码器可以将条形码输出到计算机或手机屏幕:
也可以是一个使用手机摄像头读取条形码的手机APP:
APP并未使用互联网/蓝牙/NFC等,所有数据都是通过摄像头传输的。
cimbar是一种高密度的二维条形码格式。数据存储在彩色图块网格中——根据选择哪个图块和选择哪种颜色来绘制图块,对信息进行编码。对数据应用Reed-Solomon纠错,预计错误率在1%左右。
libcimbar,这是个优化版本,包括一个基于喷泉代码(wirehair)和zstd压缩的简单文件编码协议。最高33MB(压缩后)的文件以一系列 cimbar 代码编码,输出为图像或视频等。一旦成功解码了足够多帧,该文件将被重建和解压缩。即使图像接收出错,或者有些图像已损坏或丢失,也不会有太大问题。
该代码是用C++编写的,并在 amd64+linux、arm64+android(仅限解码器)和 emscripten+WASM(仅限编码器)上开发/测试。在其他平台上应该也可以工作。
至关重要的是,由于编码器编译为 asmjs 和 wasm ,它可以在任何具有现代网络浏览器的设备上运行。对于离线使用,您可以将 cimbar.org 安装为渐进式web应用程序,或下载最新版本。至于 cimbar_js.html ,将其保存在本地,然后在浏览器中打开。
OpenCV 和 GLFW (+ OpenGL ES headers) 必须在构建前安装,所有其他依赖项都包含在源代码树中。
libopencv-dev)libglfw3-dev)libgles2-mesa-devsudo apt install libopencv-dev libglfw3-dev libgles2-mesa-dev
cmake .
make -j7
make install
默认情况下,libcimbar 将尝试在 ./dist/bin/ 下安装构建产品。
要构建 cimbar.js(供cimbar.org使用),请参阅 WASM。
编码:
./cimbar --encode -i inputfile.txt -o outputprefix
解码(释放文件到输出目录):
./cimbar outputprefix*.png -o /tmp
从stdin解码一系列编码图像:
echo outputprefix*.png | ./cimbar -o /tmp
对窗口进行编码并设置动画:
./cimbar_send inputfile.pdf
您还可以使用 cimbar.org 对文件进行编码,或最新的 release.