Как создать "дизайнерский" штрих-код?
В этом разделе
"Дизайнерским" штрих-кодом является изображение штрих-кода, внешний вид которого отличается от традиционного черно-белого изображения штрих-кода с квадратными ячейками.
Например:
- изображение может включать логотип компании поверх штрих-кода
- ячейки штрих-кода могут иметь нестандартную форму (круг, ромб, крест и т.д.)
- некоторые элементы штрих-кода могут иметь стилизованный вид
- изображение штрих-кода может быть разноцветным
- ячейки штрих-кода могут формировать некоторую картинку
"Дизайнерские" штрих-коды могут использоваться для:
- Повышения привлекательности упаковки продукта
- Гармоничного вписывания в дизайн упаковки товара, сайта или рекламы
- Индивидуализации штрих-кодов для товаров или компаний
Каждый двухмерный штрих-код имеет "важные" элементы, искажение или повреждение которых приведет к серьезному ухудшению качества распознавания или к невозможности распознавания штрих-кода. Поэтому необходимо знать о "важных" элементах иучитывать их при создании "дизайнерского" штрих-кода. VintaSoft Barcode .NET SDK может предоставить информацию о сгенерированном 2D штрих-коде в специальной структуре данных - классе Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure, в котором хранится структура 2D матричного штрих-кода (Aztec, QR Code, Micro QR, Data Matrix, Han Xin Code). Структура штрих-кода содержит информацию обо всех ячейках штрих-кода и позволяет определить их "важность" для процесса распознавания.
2D матричный штрих-код состоит из следующих слоев:
-
Фиксированная структура - фиксированные ячейки (шаблоны поиска, шаблоны ориентации, шаблоны выравнивания, тайминги), которые не зависят от пользовательских данных (свойство Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure.FixedStructure).
-
Информация о формате - ячейки (версия символа, уровень исправления ошибок, маска), которые содержат служебную информацию (свойство Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure.FixedStructure).
-
Слой данных - ячейки, которые содержат пользовательские данные и данные для исправления ошибок (свойство Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure.DataLayer).
При изменении элемента штрих-кода необходимо учитывать важность элемента штрих-кода и возможность восстановления элемента штрих-кода при распознавании штрих-кода:
-
Шаблоны поиска (search patterns) - важные ячейки штрих-кода, которые используются для поиска штрих-кода на изображении. Штрих-код не будет распознан, если форма ячеек штрих-кода сильно искажена или повреждена (свойство Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure.IsSearchPattern).
-
Информация о формате (format information) - важные ячейки штрих-кода, которые содержат служебную информацию. Штрих-код не будет распознан, если форма ячеек штрих-кода сильно искажена или повреждена (свойство Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure.IsFormatInformation).
-
Шаблоны выравнивания (alignment patterns) - не критические ячейки штрих-кода для QR Code, Micro QR, DataMatrix, Han Xin Code; критические ячейки штрих-кода для штрих-кодов Aztec.
Штрихкод не будет распознан или шанс распознать штрихкод значительно уменьшится, если форма его ячеек сильно искажена или повреждена (свойство Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure.IsAlignmentPattern), или если изображение штрих-кода имеет пространственные искажения (например, изображение было снято с низким качеством с камеры смартфона).
-
Шаблоны синхронизации (timing patterns) - не критические ячейки штрих-кода для Aztec, QR Code, Micro QR, Han Xin Code; критические ячейки штрих-кода для штрих-кодов DataMatrix.
Штрих-код не будет распознан или шансы распознать штрих-код значительно снизятся, если форма ячеек штрих-кода сильно искажена или повреждена (свойство Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure.IsTimingPattern), или если изображение штрих-кода имеет пространственные искажения (например, изображение было снято с низким качеством с камеры смартфона).
-
Слой данных (data layer) - ячейки штрих-кода, которые содержат пользовательские данные и информацию для исправления ошибок (свойство Vintasoft.Barcode.BarcodeStructure.MatrixBarcodeStructure.IsDataLayer).
Данные в этом слое могут быть восстановлены с помощью алгоритма восстановления ошибок. Уровень восстановления ошибок определяет, сколько данных можно восстановить. Требуемый уровень восстановления ошибок можно рассчитать с помощью свойств Vintasoft.Barcode.BarcodeInfo.BarcodeInfo2D.ErrorCorrectionCodewordCount и Vintasoft.Barcode.BarcodeInfo.BarcodeInfo2D.CorrectedErrors. Уровень восстановления ошибок для распознанного штрих-кода следует увеличить, если значение свойства Vintasoft.Barcode.BarcodeInfo.BarcodeInfo2D.CorrectedErrors, умноженное на 4, больше, чем значение свойства Vintasoft.Barcode.BarcodeInfo.BarcodeInfo2D.ErrorCorrectionCodewordCount.
На приведенных ниже рисунках показаны примеры штрих-кодов, где каждый тип ячейки штрих-кода обозначен отдельным цветом (изображения штрих-кода были сгенерированы приложением VintaSoft Barcode Demo):