QR-код с изображением
Раз вы здесь, вы, вероятно, хотите разместить логотип или другое изображение в центре QR-кода. Хотя QR-коды не были спроектированы для встраивания графики, их устойчивость к ошибкам позволяет заменить часть элементов пользовательской графикой, сохраняя читаемость.
Перед тем как продолжить, рекомендуем ознакомиться с уроком “Создание QR-кодов”, где объясняется ручная настройка размера, уровня коррекции ошибок и маски. Это понадобится далее.
Так как же добавить изображение в QR-код?
По сути, нужно очистить центральную часть QR-кода, освободив место для вашего логотипа. Вопрос лишь в том, сколько элементов можно удалить, чтобы штрих-код всё ещё сканировался?
Ответ частично рассмотрен в упомянутом выше уроке по QR-кодам, но в итоге всё сводится к уровню коррекции ошибок. Чем выше уровень, тем больше элементов штрих-кода может быть “повреждено” вашим изображением.
Допустим, QR-код создан с 30% избыточности. Значит ли это, что можно закрыть треть символа логотипом? Нет. QR-код содержит маркеры, которые лучше не трогать: три больших квадрата с точками, а также четвёртый квадрат в правом нижнем углу и элементы вокруг них. Остальные точки — закодированные данные, и здесь можно вносить изменения.
Означает ли 30% избыточности, что можно изменить треть элементов между квадратами? Не совсем. На практике можно изменить лишь около половины “избыточных” элементов.
Звучит сложно, но, к счастью, Barcode делает расчёты за вас и автоматически показывает максимальную область для изображения при каждой конфигурации QR-кода.
Давайте попробуем!
Начнём с простого автоматически настроенного QR-кода и попробуем освободить место в центре. Установите всё в auto и включите опцию Empty space in the middle:

Если начать с нового QR-кода, при включении этой опции вы, скорее всего, не увидите изменений — как на скриншоте выше.
Причина в том, что Barcode не подстраивает QR-код автоматически для размещения изображения. Вместо этого он пытается вырезать отверстие в центре с учётом уровня коррекции ошибок и размера, сохраняя читаемость. Поскольку наш QR-код настроен автоматически, избыточность слишком мала, чтобы что-либо вырезать.
Давайте разберёмся, и первое, что нам нужно…
Переключение в ручной режим
Нужно отключить автоматическую настройку. Поскольку мы собираемся вырезать элементы и заменять их графикой, нам нужна дополнительная избыточность и больше модулей (точек). В автоматическом режиме этого не получить, поэтому переключимся в ручной:

Здесь я отключил автоматическую настройку, увеличил размер до 33x33 модулей и повысил уровень коррекции ошибок до 55%. Здесь нет правильных значений: чем выше разрешение и уровень коррекции, тем больше область для графики. С другой стороны, чем выше разрешение, тем мельче элементы и тем сложнее их сканировать. Нужно найти баланс.
Попробуйте этот подход:
- Отключите автоматическую настройку;
- Установите высокий уровень коррекции ошибок (55% и выше);
- Задайте минимальный размер: 21x21 или около того;
- На этом этапе экран, скорее всего, станет пустым, так как содержимое не помещается в малое число элементов;
- Начинайте увеличивать размер, пока штрих-код не появится. Можно пропускать некоторые разрешения для ускорения;
- Когда штрих-код снова появится, увеличьте разрешение ещё на 1-2 шага на всякий случай.
Как видно на изображении выше, в центре QR-кода появилось небольшое пустое пространство — мы приближаемся к цели.
Настройка отверстия
Есть две опции: Center empty space и Reduce it by. Первую пока оставим и начнём со второй.
Как объяснялось выше, можно заменить лишь ограниченное число элементов, и предел задаётся уровнем коррекции ошибок. Более того, заменить их все на практике не получается. К сожалению, невозможно проверить при генерации, насколько хорошо код сканируется после печати, поэтому, хотя программа вычисляет максимальный размер графики, она позволяет уменьшить его, сохраняя больше элементов. По умолчанию вычисленное значение уменьшается на 4 элемента. Можно увеличить это число, сделав область графики меньше, или уменьшить, сделав её больше.
Здесь я установил Reduce в ноль:

Как видно, пустая область стала гораздо больше. Проблема в том, что штрих-код больше не сканируется. Даже со всей избыточностью QR-кода и дополнительными мерами предосторожности мы не можем вырезать столько элементов.
Именно для этого нужен параметр Reduce it by: чтобы подстроить отверстие так, чтобы графика помещалась, а код сканировался.
План настройки:
- Начните со штрих-кода, полученного по плану выше, и проверьте, помещается ли графика;
- Если нет, попробуйте уменьшить Reduce it by, чтобы увидеть, поможет ли это;
- Если не работает, вернитесь к плану выше и увеличьте разрешение на несколько шагов, затем сбросьте Reduce by на 4 и проверьте, достаточно ли места;
- Повторяйте, пока графика не поместится в пустую область;
- Когда поместится, увеличьте разрешение ещё на шаг на всякий случай;
- Попробуйте отсканировать код телефоном прямо с экрана. Убедитесь, что он легко сканируется даже с расстояния. Сравните с обычным QR-кодом без отверстий. Цель — добиться такого же лёгкого сканирования;
- Если есть проблемы, попробуйте уменьшить отверстие, увеличив Reduce by, или добавьте больше деталей, увеличив размеры. Также может помочь более высокий уровень коррекции ошибок.
Это процесс, и может потребоваться время для поиска подходящей конфигурации всех параметров. Возможно, вы даже захотите добавить немного больше деталей и уменьшить пустую область для дополнительной избыточности на случай будущих проблем: дефектов печати, загрязнения или царапин — в зависимости от условий использования.
Вот QR-код с относительно большой областью для графики, который при этом неплохо читается. Обратите внимание на параметры справа, обеспечивающие это:

Очень полезно протестировать код дальше: распечатать и проверить в реальных условиях, чтобы убедиться, что даже с графикой в центре QR-код сканируется в предназначенной для него среде.
Центрирование пустого пространства
Этот параметр — нечто среднее между техническими спецификациями и принципами дизайна и требует дополнительных деталей реализации QR-кода. Нужно знать две вещи:
- QR-коды всегда имеют нечётную ширину и высоту (в модулях);
- Данные в QR-коде кодируются блоками, каждый блок — два элемента в ширину.
Хотя кажется, что эти правила противоречат друг другу, структура QR-кода содержит и другие элементы, так что 2-элементные блоки в сумме дают нечётное число модулей. Впрочем, здесь это не важно.
Важно то, что удаление одного элемента QR-кода фактически “повреждает” весь блок, содержащий его. А раз блок уже повреждён, можно легко разместить рядом ещё один пиксель, и если он попадёт в тот же блок, дополнительного ущерба по сравнению с первым пикселем не будет.
Это значит, что пустую область лучше делать чётной ширины в модулях и выравнивать по блоку, чтобы минимизировать число повреждённых блоков.
Однако, поскольку сам QR-код имеет нечётное число элементов, чётная область не может быть размещена симметрично в центре. Если это не важно — можно добавить избыточности, затронув меньше блоков. Но если нужно идеальное центрирование — включите опцию Center Empty Space, которая добавляет ещё один пиксель слева и сверху, делая область идеально центрированной ценой повреждения дополнительных блоков.
В целом, можно держать её включённой большую часть времени и отключать только при очень жёстких ограничениях по площади и уровню детализации.
В заключение
Весь процесс довольно сложен, и вы можете спросить: зачем, если другие генераторы предлагают добавление графики в один клик?
Причина в том, что здесь у вас есть полный контроль и возможность настроить любой параметр, если что-то пойдёт не так. Это невозможно при подходе “в один клик”, где у вас нет контроля, если, скажем, код не сканируется после печати.
В целом, стоит немного углубиться в тему, чтобы получить лучший результат.
Если хотите узнать больше об изменении QR-кодов с сохранением читаемости: Drawing on the QR code.
Больше Информации о Barcode
Инсталляция
- Инсталляция — как установить Barcode;
- Активация Лицензии — как активировать Barcode.
Основы
- Интерфейс — подробное описание интерфейса Barcode;
- Управление штрих-кодами — добавление, переименование, клонирование и удаление;
- Импорт штрих-кодов — импорт изображений штрих-кодов;
- Пользовательские тексты — добавление текстовых элементов к штрих-кодам;
- Панель меток — настройка рамки, полей и холста;
- Ширина штрихов — компенсация растекания краски;
- Свободная зона — обеспечение хорошего сканирования;
- Использование Цветов — раскрашиваем штрих-коды и тексты.
Штрих-коды EAN
- Создание Штрих–кодов EAN–13 — типовые коды для магазинов;
- Калькулятор EAN–13 — как вычислить контрольную цифру EAN–13.
Штрих-коды UPC
- Создание Штрих–кодов UPC–A — как создавать штрих–коды UPC–A;
- Создание UPC-E — как создавать штрих-коды UPC-E;
- Калькулятор UPC–A — вычисление контрольного разряда UPC–A.
Штрих-коды NDC
- Штрих-коды NDC — о штрих-кодах NDC и их создании;
- Калькулятор NDC — вычисление контрольной цифры NDC.
QR Коды
- QR-код — как создавать и настраивать популярные 2D-коды;
- QR-код с картинкой — добавление изображения в QR-код.
Другие Штрих-коды
- Генератор ISBN — как создавать штрих-коды ISBN;
- Штрих-код BC412 — для идентификации кремниевых пластин;
Экспорт
- Прозрачные штрих-коды — штрих-коды с прозрачным фоном;
- Штрих-коды PNG — экспорт в формат PNG;
- Векторные штрих-коды — экспорт в векторные форматы;
- Имена файлов — пользовательские имена для экспорта.
Автоматизация
- Пакетная Генерация — создаем много штрих–кодов разом;
- Работа из Командной Строки — создание штрих–кодов из консоли.
Другое
- Саморисующийся SVG — рисование QR-кодов в браузере одним SVG-файлом;
- Ненастоящие штрих-коды — нужен случайный штрих-код-заглушка?
- Другие типы штрих-кодов — история и особенности менее известных форматов;
- Локализация — учим Barcode говорить на вашем языке.