【发布时间】:2014-11-25 14:29:25
【问题描述】:
我正在将 ZXing.NET 集成到 WPF 应用程序中,但我正在使用 BarcodeReader.Decode 方法来读取 QR 条码。它可以工作,但现在我想知道当图像有多个 QR 条码时会发生什么。我希望 ZXing 将它们全部读入一个数组。这可能吗?如果是,如何?我没有看到任何方法可以做到这一点。
编辑: 我发现有一个名为 QRCodeMultiReader 的类,我可以使用它来读取多个 QR 条码。但是您发送给 decodeMultiple 方法的参数是 ZXing.BinaryBitmap 类型的。如何将 Bitmap 转换为 BinaryBitmap?
这是我所拥有的,但是当我调用 decodeMultiple 时,结果变量始终为空:
public static List<BarCodeDataContract> MultipleDecode(Bitmap image)
{
var converter = new ImageConverter();
var bytes = (byte[])converter.ConvertTo(image, typeof(byte[]));
LuminanceSource source = new RGBLuminanceSource(bytes, image.Width, image.Height);
var binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
var reader = new QRCodeMultiReader();
var results = reader.decodeMultiple(binaryBitmap);
var scannedQrBarcodes = new List<BarCodeDataContract>();
foreach (var result in results)
{
if (result == null || result.BarcodeFormat != BarcodeFormat.QR_CODE || !result.Text.Contains(":")) return null;
var qrCodeData = result.Text.Split(':');
if (qrCodeData.Length != 2) return null;
int numericCode;
if (int.TryParse(qrCodeData[0], out numericCode))
{
if (System.Enum.IsDefined(typeof(QrCodeActionPrefixType), (short)numericCode))
{
Guid guid;
if (Guid.TryParse(qrCodeData[1], out guid))
{
scannedQrBarcodes.Add(new BarCodeDataContract()
{
QrCodeActionPrefixType = (QrCodeActionPrefixType)numericCode,
BarCodeObjectUniqueId = guid
});
}
}
}
}
return scannedQrBarcodes;
}
【问题讨论】:
-
你试过什么?很抱歉,我很抱歉,但是张贴带有多个 QR 码的图像所花费的时间比您发布该问题所花费的时间要少。
-
我在问题中添加了我目前拥有的代码。但我不知道如何将我的图像转换为 BinaryBitmap。这是一个 WPF 应用程序。
-
我更新了我的问题以包含将我的位图转换为 binarybitmap 的代码,但 decodeMultiple 方法总是返回 null。