addQrCodeAsImage method

Future<void> addQrCodeAsImage(
  1. String data, {
  2. int size = 280,
  3. bool raster = true,
})

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);
  }
}