把文件画进像素里:屏幕传文件,摄像头收文件
【免费下载链接】libcimbarOptimized implementation for color-icon-matrix barcodes项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar
如果把一份文件变成满屏流动的彩色光点,它能不能穿过几十厘米的空气,被另一台设备的镜头完整接住?这不是魔术,而是开源项目 libcimbar 在做的事:把数据"画"成不断翻页的彩色矩阵,让屏幕当发射塔、摄像头当接收器,全程不靠网线、Wi-Fi 或蓝牙。
为什么有人非要靠"光"传文件
设想一个真实处境:某单位研发网与互联网物理隔离,工程师想拷一份配置文件,手段却只有三样——U 盘,携带介质有失窃和染毒风险;刻盘,慢且费事;二维码,一张图撑死装几千字节,文件得切成几百张图拍,拍到怀疑人生。
libcimbar 走的是第四条路:屏幕显示、摄像头读取,信道是"光"。信号单向流动,数据不出房间,天然满足隔离要求;单帧承载量又比二维码大两个数量级。旧方案像用小勺子舀水,视觉传输像拧开水龙头——算不上江河奔涌,但已是量级的差别。
它怎么做到的:一场"光与颜料"的比喻
把整个流程想成画画,一切就通了。
画布与颜料。一屏画面被切成整齐的格子,每格像一颗马赛克像素,用不同颜色表示不同数字。格子越多、颜色越丰富,单帧装的信息越多——这就是所谓"编码",本质是给数据换一套"可见语言"。
坐标桩。画面角落有醒目的定位锚点,相当于地图上的测量桩。画面歪斜、变形时,程序靠这些桩反推透视关系,把图像"扶正"再读。
橡皮擦。反光、抖动、对焦模糊都可能抹掉部分格子,内置的 Reed-Solomon 纠错相当于多写的备份草稿,只要损坏不超比例,原稿就能被完整"擦回来"。
喷泉接水。喷泉码让发送端像喷泉一样不断喷出水花,接收端拿杯子接,不关心先接到哪滴、漏掉哪滴,接够数量就能拼出完整文件——这也是为什么偶尔漏几帧,传输依然能继续。
阿哲的第一次"隔空搬运"
实验室管理员阿哲第一次试用时心里直打鼓。他照着文档敲下命令:
git clone https://gitcode.com/GitHub_Trending/li/libcimbar cd libcimbar && cmake . && make -j$(nproc) ./dist/bin/cimbar_send -i config.json屏幕弹出不断变化的彩色窗口,像一面活过来的棋盘。他把手机切到接收模式——cimbar_recv -i 0 -o ./received——对准屏幕,几秒后进度条开始爬动,一份 2MB 的配置文档,十几秒内"飞"过了这段几十厘米的空气。阿哲说,那一刻他想起童年的传声筒,只不过这次,线是光做的。
过来人的三个坑
坑一:别让屏幕"反着光"。顶灯直射屏幕时,拍到的格子会泛白。设备放稳、屏幕背对光源、距离保持 30 到 50 厘米,识别率立刻回升——这不是玄学,是摄像头看得清看不清的问题。
坑二:收发参数要"门当户对"。发送端用-m B、接收端用默认配置,等于两人各说各话。环境不太理想时换-m 4C,慢一点但容错更好,成功率更高。
坑三:压缩级别看文件"性格"。文本、日志冗余多,把-z调高能明显少传字节;图片、视频本身已压缩过,再压也挤不出水。
没人明说的另一面
坦白说,视觉传输不是万灵药。综合速率通常在 100KB/s 上下,传 1MB 要十几秒,大文件需要耐心;它对光照、抖动、屏幕刷新率敏感,环境越乱,纠错成本越高;单次承载有上限(压缩后约 33MB),更大的文件得靠分卷工具拆开传。它适合"少量、敏感、偶发"的传输,而不是把整块硬盘搬到对面。
接力棒正在传下去
libcimbar 周边已长出一圈生态:cimbar-bigfile能把 100MB 级文件自动切片并生成传输清单;浏览器版让网页直接收发,无需安装;手机上也有专用接收应用。想深入源码,可从src/lib/cimb_translator/(编码解码核心)、src/lib/encoder/(压缩与纠错)、src/lib/extractor/(图像提取)三个目录读起,README 与 DETAILS 文档都写得很细致。
光,还在路上
回到开头的问题:文件能不能穿过空气?答案已经写在阿哲的屏幕上——能,而且每天都在发生。下次当你需要把文件送过一段"不能联网的距离",不妨想起这条由像素铺成的光路。它不追求最快,只追求:在没有网的地方,依然有路。
【免费下载链接】libcimbarOptimized implementation for color-icon-matrix barcodes项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考