【问题标题】:Why ZXing.net doesn't decode EAN-13 barcodes, created by itself为什么 ZXing.net 不解码自己创建的 EAN-13 条码
【发布时间】:2016-08-29 17:41:34
【问题描述】:

我正在尝试生成和扫描 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不能扫描自己生成的条码?

更新: 我在 A4 纸上打印条形码,扫描并通过图像编辑器进行裁剪,如下所示:

ZXing也无法扫描此条码

【问题讨论】:

    标签: c#-4.0 zxing


    【解决方案1】:

    EAN-13 条码需要水平静区(边距)。 BarcodeReader 似乎无法检测到条形码,因为图像左右两侧没有足够的空白空间。

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

    barcodeWriter.Options.Margin = 6;
    

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

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

    【讨论】:

    • 能不能让zxing更抗干扰?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多