0

我正在尝试读取 3of9 条码。 3of9 条码图像 给我的结果是不稳定的,但位置仍然相同。(尝试多次运行该方法相同的图像/条形码和相同的位置)我所说的不稳定是有时我得到条形码前的值。barcodesd.Length 不为零,因此它得到的barcodesd[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";
        }
4

1 回答 1

0

图像中的条形码未正确编码。看起来无论是谁(或其他)生成它都试图在其中插入 2 个星号“*”字符。“*”字符不是真正的可编码字符,而是 Code 3 of 9 条码的开始和结束符号。这意味着它不应插入条形码字符串中。

由于代码中有 2 个这样的“*”字符,阅读器可能能够“找到”中间部分并自行将其视为有效条形码。但这是不可预测的,因为整个代码的编码不正确。

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

于 2020-03-30T14:07:02.340 回答