Генератор QR-кода визитки (vCard)
100% приватно и локально — ваши данные никогда не покидают браузер. Эти QR-коды постоянны и никогда не истекают.
Настройки: Визитка
Дизайн
Добавить логотип в центр
Изображение читается на этой странице и встраивается в код как data: URL. Оно никуда не загружается и остаётся внутри файла, который вы скачиваете.
Ещё параметры дизайна
Тёмная половина кода. Держите её заметно темнее фона по светлоте.
Закрашивает и свободную зону, и промежутки между модулями. Прозрачный фон исключает его из файла, поэтому им ничего не рисуется.
Контраст 11.5:1 между модулями и фоном.
PNG и WebP сохраняют альфа-канал; в SVG прямоугольник фона просто отсутствует. Светлой половиной контраста становится то, на чём код размещён.
Градиент заливает только тёмные модули. Контраст, который реально получает сканер, задаёт его светлый конец, поэтому оба конца должны оставаться тёмными.
Второй цвет, используется только при выбранном градиенте. Контраст измеряется по нему наравне с первым.
Градусы по часовой стрелке от направления слева направо. Радиальный градиент расходится из центра, поэтому угол действует только для линейного.
Скруглённые формы закрывают меньшую часть каждой ячейки. Центр остаётся закрытым, а именно его считывает декодер, но плотный код в мелкой печати надёжнее читается квадратами.
Кольцо трёх поисковых узоров.
Зрачок внутри каждого поискового узора.
Пустое поле вокруг кода, измеряется в модулях. Стандарт задаёт минимум 4.
Более высокий уровень переносит больше повреждений и стоит ёмкости, поэтому то же содержимое даёт более плотный символ.
В центре стоит логотип, и он удерживает уровень H. Предел его ширины следует за символом: 14% на самом маленьком коде и 30% на плотном.
Предпросмотр и экспорт
Введите имя или фамилию. vCard обязана нести отображаемое имя, поэтому карточка без того и другого не является корректной записью.
Экспорт
Растр, для экранов
Заполните форму, чтобы включить скачивание.
Размер экспорта и закодированный текст
- Данные
- Пока не закодировано
- Символ
- Ещё не построен
- Коррекция
- M
Ожидание ввода
QR-код vCard несёт полную карточку контакта, поэтому при сканировании телефон предлагает сохранить контакт, а не открыть страницу. Каждое заполненное поле добавляет байты, и символ растёт вместе с ними, поэтому полную визитку приходится печатать крупнее, чем обычную ссылку.
Когда его сканируют
Телефон показывает предпросмотр контакта и предлагает добавить его в адресную книгу: страница не загружается и ничего не скачивается.
Как выглядит запись vCard 4.0
Полезная нагрузка — это маленький текстовый документ, а не ссылка. Он открывается строками BEGIN:VCARD и VERSION:4.0, несёт по одному свойству на строку с разделителем из возврата каретки и перевода строки и закрывается END:VCARD. Версия 4.0 определена в RFC 6350.
За имя отвечают два свойства, и работа у них разная. N хранит структурированное имя в пяти упорядоченных слотах, начиная с фамилии. FN хранит одну строку для отображения, которую показывает адресная книга, и RFC 6350 делает FN обязательным — поэтому карточка вообще без имени не является корректной записью.
ADR — это одно свойство из семи компонентов в фиксированном порядке, и пустым компонентам разделители всё равно нужны. Именно поэтому адрес без абонентского ящика начинается с двух точек с запятой перед улицей.
- N:Соколова;Марина;;; затем FN:Марина Соколова
- ORG:Северный переплёт и TITLE:Начальник производства
- TEL;TYPE=cell:+79161234567 и TEL;TYPE=work,voice:+74951234567
- ADR;TYPE=work:;;улица Свободы, 18;Ярославль;Ярославская область;150000;Россия
- RFC 6350 типизирует TEL как URI tel:; более короткая форма с голым номером, которая используется здесь, — то, чего ждут и парсеры эпохи 3.0
Почему карточка контакта даёт большой символ
Карточка, заполняющая на этой странице каждое поле, доходит примерно до 400 байт текста — в несколько раз больше обычной веб-ссылки. Уровень H тратит около двух третей кодовых слов символа на коррекцию ошибок — 2430 из 3706 на версии 40, — и именно это покупает те примерно 30 процентов символа, которые он способен восстановить. Это же делает H уровнем, который вмещает меньше всего: сетка версии 20 держит на H 382 байта. Поэтому по умолчанию здесь стоит M, который размещает ту же информацию на заметно меньшей сетке.
Версия 20 — это 97 модулей в поперечнике. Вместе со свободной зоной в четыре модуля с каждой стороны, которую требует стандарт, получается 105 модулей от края до края. При печати шириной 25 мм каждый модуль — около 0,24 мм. Рекомендации по печати кладут нижнюю границу между 0,4 и 0,5 мм на модуль, так что этим 105 ширинам модуля нужно где-то от 42 до 53 мм, и полная карточка контакта на 25 мм заметно не дотягивает ни до одной из этих цифр.
Если код обязан быть маленьким, лечится это меньшим числом байт, а не большей коррекцией. Отказ от заметки, второго телефона и региона часто убирает из полезной нагрузки сотню байт и опускает версию сразу на несколько ступеней.
- Символы с диакритикой и нелатинские кодируются в UTF-8 и стоят от двух до четырёх байт каждый вместо одного
- Логотип в центре принудительно включает уровень H, поэтому полной карточке с логотипом нужен больший размер печати
- Абсолютный потолок одного символа — 2953 байта, на уровне L
Версия 4.0 и то, что её всё ещё читает
В обращении три версии vCard: 2.1, 3.0 из RFC 2426 и 4.0 из RFC 6350. Эта страница пишет 4.0 — действующую спецификацию и ту, которая задаёт UTF-8 как кодировку, а не оставляет наборы символов на откуп параметру.
«Контакты» в iOS и современные приложения контактов в Android читают записи 4.0 из сканирования. Ниже этого уровня поддержка не всеобщая: часть старых сторонних приложений контактов и часть корпоративных адресных книг делались под 2.1 или 3.0 и либо проигнорируют незнакомые свойства, либо откажутся от записи целиком. Если карточка должна дойти до парка старых аппаратов, проверьте на одном, прежде чем печатать тысячу.
Ничто в записи не проверяется. vCard утверждает то, что вы напечатали, поэтому сканирование — это предложение сохранить контакт, а не доказательство, что контакт настоящий. Все платформы показывают экран подтверждения, прежде чем писать в адресную книгу.
Вопросы и ответы
Сколько можно поместить на одну карточку, прежде чем она перестанет сканироваться?
Предел задаёт размер печати, а не формат. Полная карточка — около 400 байт, что на уровне M даёт сетку примерно от 77 до 85 модулей. Напечатанная шириной 45 мм и больше, она сканируется с расстояния вытянутой руки; напечатанная на 25 мм, она даёт модули около 0,24 мм, и камеры телефонов начинают их терять.
Почему версия 4.0, а не 3.0?
4.0 — действующая спецификация, RFC 6350, и она фиксирует кодировку символов на UTF-8, поэтому имена с диакритикой и нелатинские письменности переживают путь туда и обратно без параметра charset. Плата за это — несколько старых приложений контактов, сделанных под 2.1 или 3.0, могут отбросить незнакомые им свойства.
Можно ли добавить на карточку фотографию?
Встроенную — нет. Свойство PHOTO несёт изображение в base64, и даже маленький портрет доходит до десятков килобайт при жёстком потолке в 2953 байта на весь символ. Разместите изображение на своей странице и используйте вместо этого поле «Сайт».
Что происходит с диакритикой и нелатинскими письменностями?
Они кодируются в UTF-8 и хранятся в байтовом режиме QR-кода. Они работают, но не бесплатно: символ вне обычного ASCII стоит от двух до четырёх байт вместо одного, поэтому имя на греческом, арабском или японском поднимает символ на версию-другую.
Как работает статический QR-код
Каждый код на этом сайте статический: данные записаны в сами чёрно-белые модули. При чтении кода ничего не запрашивается, ни один наш сервер в этом не участвует и никакая подписка не держит напечатанный код на плаву. То же свойство и есть ограничение: после печати изменить его содержимое нельзя.
Дальше то, прочитается ли напечатанный код, решают три вещи: во сколько байт вышли данные, какой уровень коррекции поглощает повреждения и какой ширины получается один модуль на бумаге. Эти руководства разбирают каждую из них с цифрами.