【问题标题】:Why Zxing.net can't decode these qr codes?为什么Zxing.net不能解码这些二维码?
【发布时间】:2015-11-27 08:34:59
【问题描述】:

我正在尝试解码 tiff 帧中的二维码。我裁剪了框架的右下角四分之一。

System.Drawing.Rectangle section = new        System.Drawing.Rectangle(barcodeBitmap.Width / 2, barcodeBitmap.Height / 2, barcodeBitmap.Width, barcodeBitmap.Height);
System.Drawing.Bitmap croppedBitmap = new System.Drawing.Bitmap(section.Width, section.Height);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(croppedBitmap);
g.DrawImage(barcodeBitmap, 0, 0, section, System.Drawing.GraphicsUnit.Pixel);

它可以解码这个裁剪的部分

但它无法解码这些。

我使用的代码是这样的

IBarcodeReader reader = new BarcodeReader();
var barcodeBitmap = (Bitmap)Bitmap.FromFile(path);
var result = reader.Decode(barcodeBitmap);
if (result != null)
{
  var Text = result.Text;
}

如何才能更好地解码?

【问题讨论】:

    标签: c# .net qr-code zxing


    【解决方案1】:

    您可以设置属性TryHarder,这将使ZXing 花费更多时间来尝试查找条形码。它优化了准确性,而不是速度:

     var reader = new ZXing.BarcodeReader { TryHarder = true }; 
    

    【讨论】:

    • @JBKing 这是作者对他自己问题的回答。
    • 鉴于答案的最初措辞,我将其视为评论而不是问题的答案。从那以后,它经过了相当多的编辑,使我最初的评论变得毫无意义。
    【解决方案2】:

    如果您的阅读器专门用于解码二维码,那么您应该使用更有针对性的阅读器。我已经使用此代码在 WP7+ 应用程序上扫描二维码,没有任何问题。

    using ZXing;
    using ZXing.Client.Result;
    using ZXing.Common;
    using ZXing.QrCode;
    ....
    var reader= new ZXing.QrCode.QRCodeReader();
    var barcodeBitmap = (Bitmap)Bitmap.FromFile(path);
    var result = reader.decode(barcodeBitmap);
    if (result != null)
    {
      var text = result.Text;
    }
    

    否则,您可以使用更通用的方法,

    var reader = new MultiFormatReader();
    var barcodeBitmap = (Bitmap)Bitmap.FromFile(path);
    var result = reader.decode(barcodeBitmap);
    if (result != null)
    {
      var format = result.BarcodeFormat;
      var parsedResult = ResultParser.parseResult(result);
      var type = parsedResult.Type;
      var text = result.Text;
      ....
    }
    

    【讨论】:

    • 'cuse me,但是你在这个问题中使用ZXing.Net吗? zxingnet.codeplex.com
    • @Blaise 是的。查看第一个代码 sn-p 中的命名空间。
    • (Bitmap)Bitmap.FromFile(path); 中是来自System.Drawing 还是来自ZXingBitmap?我的reader.decode() 要求BinaryBitmap 类型参数。
    • 我通常也会使用BinaryBitmap。如果您遇到问题,请发布问题并将 cmets 中的链接发送给我。有机会我会去看看的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多