如何正确设置 ReadBarcodes

How to set ReadBarcodes properly

我正在尝试读取 3of9 条形码。 3of9 barcode Image 给我的结果是不稳定的,但位置仍然相同。 (多次尝试 运行 相同的方法 Image/barcode 和相同的位置) 我所说的不稳定是指有时我会得到条形码的价值 前任。 barcodesd.Length 不为零,因此它正在获取条形码d[0].Value,它是 25350111 有时 barcodesd.Length = 0

这是我的代码:

public static string DecodeImg(System.Drawing.Bitmap img)
        {
            System.IO.MemoryStream data = new MemoryStream();
            RasterImage srcImage = null;
            try
            {

                BarcodeEngine engine = new BarcodeEngine();
                Leadtools.Codecs.RasterCodecs codecs = new Leadtools.Codecs.RasterCodecs();

                img.Save(data, System.Drawing.Imaging.ImageFormat.Jpeg);
                data.Seek(0, System.IO.SeekOrigin.Begin);
                srcImage = codecs.Load(data);
                BarcodeData[] barcodesd = engine.Reader.ReadBarcodes(srcImage, LeadRect.Empty, 0, BarcodeEngine.GetSupportedSymbologies(), null);
                srcImage.Dispose();
                if (barcodesd != null)
                {
                    if (barcodesd.Length > 0)
                        return barcodesd[0].Value;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                data.Dispose();

                if (srcImage != null)
                    srcImage.Dispose();
            }

            return "Unable to Read";
        }

图像中的条形码编码不正确。似乎生成它的任何人(或任何人)都试图在其中插入 2 个星号“*”字符。 “*”字符不是真正的可编码字符,而是 9 个条形码中第 3 个代码的开始和结束符号。这意味着它不应插入条形码字符串中。

由于代码中有 2 个这样的“*”字符,reader 可能能够 "find" 中间部分并认为它本身是一个有效的条形码。但这是不可预测的,因为整个代码的编码是不正确的。

如果您认为该代码是有效的,并且您有来自任何来源的证据(例如,不同的条形码 reader 可以始终识别它),请发送您必须支持的图像@leadtools.com 并提供有关您的发现的完整详细信息。还包括有关您使用的 SDK 版本和平台的信息(例如 v20、64 位 C# WinForms)。