Is there anything similar to a QR code that works offline?
Say I have a flyer that I want to discreetly distribute and there is no internet.
Is there something like a QR code that contains the data itself and not just a URL?
This way someone with no data plan could scan the icon/code with an app and the unrecognizable bits and bytes from the icon/code would show up on their screen as a .JPEG of a flyer or something.
There are many types of QR code. iirc a single qrcode can contain up to a few kilobytes, but the more data you put in it the more difficult it will be to scan.
so, you could use qrcodes for offline distribution of short text messages or very low resolution images. I think mobile devices' qrcode scanners will display the contents of TEXT type qrcodes, but they probably don't have support for decoding an image from one (so such an app would need to be written). you can create TEXT type qrcodes using the qrencode tool (packaged in major linux distros) or using websites like https://www.qr-code-generator.com/ (note that I think only their URL and TEXT types are offline; the others upload a file to their servers and make a qrcode containing a URL for it).
This qrcode says "Hello":
This qrcode contains this 88x26 pixel (1467 byte) image:
(created using cat lemmy.png |base64 |qrencode -o lemmy_qr.png; can be decoded using zbarimg lemmy_qr.png |sed 's/QR-Code://'|base64 -d > output.png. on debian/ubuntu you can apt install qrencode zbar-tools to get the two required commands.)
I didn't know there was an actual limit to the size of a QR code, but as we see a big problem with (raster) images is that the QR code rapidly becomes much more complex than the image itself
I agreed a priori, which, as you probably guessed, is exactly why I put that parenthesis 😀 But I think in practice the starting point already is too complex. For example, I opened inkscape and saved the empty image, the result is already more than 1KB. Similarly, Lemmy's very simple logo is already 3KB.