addQrCodeAsImage method
QR als Bild. raster true → GS v 0 (imageRaster), false → ESC * (image).
Welcher Befehl funktioniert, hängt vom Drucker ab — daher umschaltbar.
Der QR wird direkt aus der Modul-Matrix gerastert: jedes Modul wird auf ein
ganzzahliges scale×scale-Quadrat abgebildet (rein schwarz/weiss, kein
Anti-Aliasing). Dadurch sind die Kanten scharf per Konstruktion und das
Bild ist deutlich kleiner/schneller ueber Bluetooth als der fruehere
QrPainter→PNG-Roundtrip.
Implementation
Future<void> addQrCodeAsImage(String data, {int size = 280, bool raster = true}) async {
if (data.isEmpty) {
_qrAusfall(data, 'leere Nutzlast');
return;
}
try {
final RasterImage img = renderQrMatrix(data, size: size);
bytes.add(Uint8List.fromList(
raster ? generator.imageRaster(img) : generator.image(img),
));
myPosPaper.addImage(await encodePng(img));
} catch (e) {
// Frueher endete der Fehler hier in einem kDebugMode-print: im Release
// entstand ein Pflichtbeleg ohne QR, ohne jedes Signal.
_qrAusfall(data, e);
}
}