Text, a photo, or a small file: encoded into a sequence of QR codes shown on loop, and another camera reads them back and reassembles it. No Bluetooth, no Wi-Fi — just light.
How it works: the content (text, a resized/compressed photo, or a small file) is Base64-encoded and split into chunks, each shown in a QR code carrying an index/total/session id, looping continuously. The receiver collects whichever pieces it manages to catch and reassembles the content once it has them all — it doesn't need to read every single frame.