Как правильно установить ReadBarcodes - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь прочитать штрих-код 3of9. 3of9 Изображение штрих-кода результат, который мне дает, непостоянен, но местоположение остается прежним. (попытался запустить этот метод несколько раз одно и то же изображение / штрих-код и одну и ту же позицию) Под непостоянным я имею в виду то, что иногда получаю значение штрих-кода ex. barcodesd.Length не ноль, поэтому он получает barcodesd [0]. Значение 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";
        }

1 Ответ

0 голосов
/ 30 марта 2020

Штрих-код на изображении неправильно закодирован. Похоже, кто бы ни (или что бы то ни было) сгенерировал его, он попытался вставить в него 2 символа звездочки "*". Символ "*" не является истинно кодируемым символом, но является символом начала и конца для штрих-кода Code 3 of 9. Это означает, что его нельзя вставлять в строку штрих-кода.

Поскольку в коде 2 таких символа «*», читатель может «найти» среднюю часть и считать его допустимым штрих-кодом на свой. Но это не предсказуемо, так как кодирование всего кода неверно.

Если вы считаете, что код действителен, и у вас есть доказательства этого из любого источника (например, другой считыватель штрих-кода может последовательно его распознать ), пожалуйста, пришлите изображения, которые у вас есть support@leadtools.com и предоставьте полную информацию о ваших выводах. Также включите информацию о том, какую версию SDK и какую платформу вы используете (например, v20, 64-битная C# WinForms).

...