zxing-dart
zxing-dart copied to clipboard
result.text returns garbled characters
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)