Ich bin mir nicht sicher, ob Sie das erreichen können, da die Menge an Informationen, die ein QR-Code aufnehmen kann, ziemlich begrenzt ist.
Zunächst möchten Sie Ihr Bild wahrscheinlich als Rohbytes speichern, da die anderen Formate (numerisch und alphanumerisch) für die Speicherung von Text / Zahlen ausgelegt sind und weniger Platz für die Speicherung Ihres Bildes bieten. Angenommen, Sie wählen den größtmöglichen QR-Code (Version 40) mit der kleinsten Fehlerkorrekturstufe, der bis zu 2.953 Byte binäre Informationen enthalten kann (siehe hier) .
Die erste Option, wie Sie vorschlagen, speichern Sie das Bild als Bitmap. Dieses Format erlaubt überhaupt keine Komprimierung und benötigt (im Falle eines RGB-Bildes ohne Alpha-Kanal) 3 Bytes pro Pixel. Wenn wir die Dateikopfgröße (14 bis 54 Byte) berücksichtigen und die Auffüllung ignorieren (jede Zeile von Bilddaten muss auf eine Länge aufgefüllt werden, die ein Vielfaches von 4 ist), können Sie ungefähr 2900/3 = 966 speichern Pixel. Wenn wir ein quadratisches Bild betrachten, stellt dies eine 31x31-Bitmap dar, die selbst für ein Miniaturbild klein ist (zum Beispiel ist mein Avatar am Ende dieses Beitrags 32x32 Pixel).
Als zweite Option verwenden Sie JPEG, um Ihr Bild zu kodieren. Dieses Format hat den Vorteil, dass ein Komprimierungsalgorithmus verwendet wird, der die Dateigröße reduzieren kann. Dieses Mal gibt es keine genaue Formel, um die Größe eines Bildes in 2,9kB zu erhalten, aber ich habe versucht, einige quadratische Bilder zu verwenden und sie zu verkleinern, bis sie in diese Größe passen, wobei ein guter (93) Qualitätsfaktor erhalten bleibt von etwa 60x60 Pixelbildern. (Auf solchen kleinen Bildern ist es normal, keinen unglaublichen Komprimierungsfaktor zwischen jpeg und bmp zu sehen, da der Dateikopf in einer JPEG-Datei viel größer ist als in einer bmp-Datei: ungefähr 500 Bytes). Das ist besser als Bitmap, bleibt aber ziemlich klein.
Schließlich, selbst wenn es Ihnen gelingt, Ihr Bild in diesem QR-Code zu kodieren, werden Sie auf ein anderes Problem stoßen: Ein so großer QR-Code ist sehr, sehr schwer erfolgreich zu scannen. In der Tat wird dieser QR-Code eine Größe von 177x177 Modulen haben (ein "Modul" ist ein kleines weißes oder schwarzes Quadrat). Angenommen, Sie scannen es mit einem Smartphone, das sogenannte "HD" -Rahmen (1280x720 Pixel) liefert, hat jedes Modul eine maximale Größe von etwa 4 Pixeln. Wenn Sie das Kamerarauschen, das Aliasing und die Unschärfe berücksichtigen, weil der Benutzer beim Scannen nie völlig untätig ist, wird es die Qualität der Eingabeframes für jeden QR-Code-Decodieralgorithmus sehr schwierig machen, den QR zu erhalten Code (vergessen Sie nicht, dass wir den Fehlerkorrekturpegel zu Beginn auf Low setzen!).
Obwohl es keine sehr guten Nachrichten sind, hoffe ich, dass dir das hilft!