VintaSoft Barcode .NET SDK 16.0: Руководство для .NET разработчика
В этом разделе
Как создать художественный штрих-код QR?
В этом разделе
Символика штрих-кодов QR поддерживает алгоритм коррекции ошибок с 4 уровнями для восстановления поврежденных данных в штрих-коде:
Уровень коррекции ошибок Объем восстановления % (приблизительно)
L 7%
M 15%
Q 25%
H 30%

Возможность восстановления данных штрих-кода позволяет создавать художественные QR штрих-коды, т. е. рисовать небольшое изображение поверх области штрих-кода.

Важно! Художественный QR Code штрих-код - это "искаженный" QR Code штрих-код, и его способность к восстановлению ниже, чем у обычного штрих-кода.

В приведенном ниже алгоритме показано, как создать художественный QR Code штрих-код с уменьшенной не более чем в 2 раза восстановительной способностью.



Алгоритм создания художественного QR Code штрих-кода

Термины, используемые в алгоритме:
  1. Изображение логотипа - изображение для нанесения на штрих-код
  2. Ячейка - ячейка штрих-кода, которая может быть черного или белого цвета
  3. Размер ячейки - размер "ячейки", который можно получить/установить с помощью свойства WriterSettings.MinWidth.
  4. Площадь ячейки - площадь "ячейки", "площадь_ячейки" = "размер_ячейки" * "размер_ячейки"
  5. Версия QR Code штрих-кода - версия QR штрих-кода, которую можно получить/установить с помощью свойства WriterSettings.QRSymbol
  6. Объем восстановления - объем восстановления в процентах, смотрите таблицу выше
  7. Коэффициент гарантии - коэффициент гарантии, доступные значения от 0 до 1, рекомендуемое значение 0.2


Шаги алгоритма:
  1. Вычислить площадь в "ячейках" ^2 для "изображения логотипа":
    "logo_image_area_in_cells" = logo_image_width_in_pixels * logo_image_height_in_pixels / cell_area_in_pixels

  2. Сгенерировать обычный штрих-код QR с необходимыми данными и уровнем коррекции ошибок (рекомендуется уровень коррекции ошибок "H").
    Получите "версию сгенерированного QR Code штрих-кода":
    "qr_version" = value of the WriterSettings.QRSymbol property

  3. Рассчитать ширину/высоту в "ячейках" сгенерированного QR Code штрих-кода:
    "qr_barcode_width_in_cells" = 21 + (qr_version - 1) * 4

  4. Вычислить площадь в "ячейках" ^2 QR Code штрих-кода, которую нельзя использовать для изображения логотипа:
    "system_qr_barcode_area_in_cells" = 9 ^ 2 * 3 = 243

  5. Вычислить площадь в "ячейках" ^2 QR Code штрих-кода, которую можно использовать для изображения логотипа:
    "available_qr_barcode_area_for_logo_image_in_cells" = qr_barcode_width_in_cells ^ 2 - system_qr_barcode_area_in_cells

  6. Рассчитать площадь в "ячейках" ^2 QR Code штрих-кода, которую можно использовать для изображения логотипа, при этом объем восстановления QR Code штрих-кода не уменьшится более чем в 2 раза:
    "safe_qr_barcode_area_for_logo_image_in_cells" = available_qr_barcode_area_for_logo_image_in_cells * ("recovery_capacity" / 100) * (1 - "assurance_factor") * 0.5

  7. Увеличить "qr_version" и перейдите к шагу 3, если "logo_image_area_in_cells" меньше, чем "safe_qr_barcode_area_for_logo_image_in_cells".

  8. Нарисовать изображение логотипа на изображении штрих-кода в зеленой или желтой области (смотрите изображение ниже).

  9. Распознать сгенерированный штрих-код QR с помощью считывателя штрих-кодов и получить уровень качества распознавания штрих-кода:
    "reading_quality" = value of the IBarcodeInfo.ReadingQuality property

  10. Увеличить "qr_version" и перейдите к шагу 3, если "read_quality" меньше 0,5.

  11. Художественный штрих-код QR сгенерирован.


Вот пример C#/VB.NET кода, который показывает, как создать художественный штрих-код QR с размером ячейки 5x5 пикселей и изображением логотипа размером 112x65 пикселей:
  1. "logo_image_area_in_cells" = 112 * 65 / (5 * 5) = 292

  2. Текст штрих-кода: https://www.vintasoft.ru
    Уровень коррекции ошибок: H
    "qr_version" = 3

  3. "qr_barcode_width_in_cells" = 21 + (3 - 1) * 4 = 29

  4. "available_qr_barcode_area_for_logo_image_in_cells" = 29 ^ 2 - 243 = 598

  5. "safe_qr_barcode_area_for_logo_image_in_cells" = 598 * (30 / 100) * (1 - 0.2) * 0.5 = 71

  6. 292 > 71, "qr_version" = 9 - перейти к шагу 3 главного алгоритма

  7. "qr_barcode_width_in_cells" = 21 + (9 - 1) * 4 = 53

  8. "available_qr_barcode_area_for_logo_image_in_cells" = 49 ^ 2 - 243 = 2566

  9. "safe_qr_barcode_area_for_logo_image_in_cells" = 2566 * (30 / 100) * (1 - 0.2) * 0.5 = 307

  10. 292 < 307 - перейти к шагу 8 главного алгоритма

  11. Нарисовать изображение логотипа на изображении штрих-кода в зеленой или желтой области (смотрите изображение ниже).

  12. "reading_quality" = 0.66

  13. Художественный штрих-код QR сгенерирован.