为什么 ZXing.net 不解码自己创建的 EAN-13 条形码
Why ZXing.net doesn't decode EAN-13 barcodes, created by itself
我正在尝试生成并扫描 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也扫描不了这个条码
EAN-13 条形码需要水平静区(边距)。 BarcodeReader
似乎未能检测到条形码,因为图像左右两侧没有足够的空白 space。
我在写入条形码之前设置了 Margin
选项,并且能够创建一个可以读取的条形码图像:
barcodeWriter.Options.Margin = 6;
文档说这应该产生 6 像素的水平边距。但是,实际上我在生成的图像中看到了更大的边距。
由于左数第 5 栏中的垂直白线伪像,您打印后扫描的图像似乎无法读取。我从您的图像中删除了这条白线(见下文),然后 BarcodeReader
能够成功读取条形码。
我正在尝试生成并扫描 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也扫描不了这个条码
EAN-13 条形码需要水平静区(边距)。 BarcodeReader
似乎未能检测到条形码,因为图像左右两侧没有足够的空白 space。
我在写入条形码之前设置了 Margin
选项,并且能够创建一个可以读取的条形码图像:
barcodeWriter.Options.Margin = 6;
文档说这应该产生 6 像素的水平边距。但是,实际上我在生成的图像中看到了更大的边距。
由于左数第 5 栏中的垂直白线伪像,您打印后扫描的图像似乎无法读取。我从您的图像中删除了这条白线(见下文),然后 BarcodeReader
能够成功读取条形码。