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

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

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

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



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

    Термины, используемые в алгоритме:
    1. Изображение логотипа - изображение для нанесения на штрих-код
    2. Ячейка - ячейка штрих-кода, которая может быть черного или белого цвета
    3. Размер ячейки - размер ячейки, который можно получить/установить с помощью свойства Vintasoft.Barcode.WriterSettings.MinWidth.
    4. Площадь ячейки - площадь ячейки, площадь_ячейки = размер_ячейки * размер_ячейки
    5. Версия штрих-кода QR - версия QR штрих-кода, которую можно получить/установить с помощью свойства Vintasoft.Barcode.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:
      qr_version = value of the WriterSettings.QRSymbol property

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

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

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

    6. Рассчитать площадь в ячейках ^2 штрих-кода QR, которую можно использовать для изображения логотипа, при этом объем восстановления штрих-кода QR не уменьшится более чем в 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 сгенерирован.


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

    2. Текст штрих-кода: https://www.vintasoft.com
      Уровень коррекции ошибок: 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 сгенерирован.