zxing-dart icon indicating copy to clipboard operation
zxing-dart copied to clipboard

result.text returns garbled characters

Open evanwsu opened this issue 10 months ago • 0 comments

LuminanceSource source = RGBLuminanceSource(
            image.width,
            image.height,
            image
                .convert(numChannels: 4)
                .getBytes(order: img.ChannelOrder.abgr)
                .buffer
                .asInt32List());
        var bitmap = BinaryBitmap(HybridBinarizer(source));
        final hints = DecodeHints()..put(DecodeHintType.characterSet, 'UTF-8');
        var result = QRCodeReader().decode(bitmap,
            hints: hints);

When the contents of the QR code contain Chinese characters, decode returns the garbled characters and uses a sweep method to return the correct data.

  final hints1 = EncodeHints()..put(EncodeHintType.characterSet, CharacterSetECI.UTF8);
  var qrcode = Encoder.encode('这是一个二维码', ErrorCorrectionLevel.h, hints: hints1);
  var matrix = qrcode.matrix!;
  var scale = 4;

  var image = img.Image(
      width: matrix.width * scale,
      height: matrix.height * scale,
      numChannels: 4);
  for (var x = 0; x < matrix.width; x++) {
    for (var y = 0; y < matrix.height; y++) {
      if (matrix.get(x, y) == 1) {
        img.fillRect(image,
            x1: x * scale,
            y1: y * scale,
            x2: x * scale + scale,
            y2: y * scale + scale,
            color: img.ColorRgba8(0, 0, 0, 0xFF));
      }
    }
  }
  
  LuminanceSource source = RGBLuminanceSource(
      image.width,
      image.height,
      image
          .convert(numChannels: 4)
          .getBytes(order: img.ChannelOrder.abgr)
          .buffer
          .asInt32List());
  var bitmap = BinaryBitmap(HybridBinarizer(source));
  final hints = DecodeHints()..put(DecodeHintType.characterSet, 'UTF-8');
  var result = QRCodeReader().decode(bitmap,
      hints: hints);
  print('result: ${result.text}');

Another case, encode a qr code, decode qr code. Unhandled exception: ReaderException #0 FinderPatternFinder._selectBestPatterns (package:zxing2/src/qrcode/detector/finder_pattern_finder.dart:566:7) #1 FinderPatternFinder.find (package:zxing2/src/qrcode/detector/finder_pattern_finder.dart:127:23) #2 Detector.detect (package:zxing2/src/qrcode/detector/detector.dart:42:23) #3 QRCodeReader.decode (package:zxing2/src/qrcode/qrcode_reader.dart:40:44)

evanwsu avatar Apr 02 '24 09:04 evanwsu