为什么ZXing.net不解码自己创建的EAN-13条形码

时间:2016-08-29 08:15:09

标签: c#-4.0 zxing

我正在尝试生成并扫描EAN-13条形码:

BarcodeReader barcodeReader = new BarcodeReader();
        BarcodeWriter barcodeWriter = new BarcodeWriter
        {
            Format = BarcodeFormat.EAN_13
        };
        barcodeWriter.Options.Height = 200;
        barcodeWriter.Options.Width = 200;

        barcodeReader.Options.PossibleFormats = new List<BarcodeFormat>();
        barcodeReader.Options.PossibleFormats.Add(BarcodeFormat.EAN_13);
        barcodeReader.Options.TryHarder = true;


        string content = "123123123123";
        Bitmap barcodeBitmap = barcodeWriter.Write(content);
        var res = barcodeReader.Decode((Bitmap)barcodeBitmap); //res == null
        Console.WriteLine(res.Text);

为什么ZXing.net无法扫描自己生成的条形码?

UPD: 我在A4纸上打印条形码,扫描它并通过图像编辑器裁剪如下: barcode

ZXing也无法扫描此条形码

1 个答案:

答案 0 :(得分:1)

EAN-13条形码需要水平静区(边缘)。 BarcodeReader似乎未能检测到条形码,因为图像的左侧和右侧没有足够的空白区域。

我在编写条形码之前设置了Margin选项,并且能够创建条形码图像然后可以读取:

barcodeWriter.Options.Margin = 6;

文档说这应该产生6像素的水平边距。但是,实际上我在生成的图像中看到了更大的余量。

由于左侧第5个栏中的垂直白线伪影,您打印的扫描图像似乎无法读取。我从您的图片中删除了此白线(见下文),然后BarcodeReader能够成功读取条形码。

barcode with white line artefact removed