Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас

QR-код

Згенерувати QR-код і завантажити як SVG

Дані надсилаються на сервер, але не зберігаються

Цей інструмент не можна виконати у браузері, тому введені дані надсилаються на наш сервер. Ми обробляємо їх у пам'яті та одразу повертаємо результат: нічого не записується в базу, у файли чи в логи, нічого не передається третім сторонам. Та все ж не вставляйте сюди справжні робочі паролі чи ключі - для чутливих даних краще скористатися локальними інструментами.

Поділитись

Де це потрібно

QR-код - це місток між екраном і телефоном: посилання на подію, адреса профілю, Wi-Fi у офісі, реквізити для оплати. Для розробника найчастіший випадок - згенерувати код у листі, на квитку або в PDF.

Результат тут - SVG, а не PNG. Векторна графіка масштабується без розмиття: той самий файл однаково добре виглядає і в листі, і на банері.

Формати вмісту

QR-код зберігає просто текст, але телефони розпізнають кілька усталених форматів:

https://laravelukraine.com          → відкриє посилання
mailto:hello@example.com            → лист
tel:+380441234567                   → дзвінок
WIFI:T:WPA;S:МояМережа;P:пароль;;   → підключення до Wi-Fi
BEGIN:VCARD...END:VCARD             → контакт

Скільки даних вміщується

Максимум - 2953 байти при мінімальному рівні корекції помилок. Але це теоретична межа: код на дві тисячі символів стає настільки щільним, що телефон його не прочитає з екрана.

Практичне правило: чим коротший вміст, тим надійніше сканується. Довге посилання з UTM-мітками краще спершу скоротити.

Окремо про українську: рахуються байти, а не символи. Кирилична літера в UTF-8 займає два байти, тож 100 символів українською - це 200 байтів. Цей інструмент кодує в UTF-8 явно, тому кирилиця працює; бібліотеки за замовчуванням часто беруть ISO-8859-1 і падають на першій же літері «і».

Корекція помилок

QR-код містить надлишкові дані, тому читається, навіть коли частину пошкоджено. Рівнів чотири - від 7% до 30% відновлюваних втрат.

Це та сама властивість, завдяки якій у центр коду можна покласти логотип: він затуляє частину модулів, а корекція їх відновлює. Ціна - розмір: чим вищий рівень, тим щільніша сітка при тому самому вмісті.

У Laravel

composer require bacon/bacon-qr-code
use BaconQrCode\Renderer\ImageRenderer;
use BaconQrCode\Renderer\Image\SvgImageBackEnd;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;

$writer = new Writer(new ImageRenderer(new RendererStyle(300), new SvgImageBackEnd));

// UTF-8 обов'язково: без нього кирилиця кине виняток
$svg = $writer->writeString('https://laravelukraine.com', 'UTF-8');
// У листі: вбудувати SVG як data URI, бо зовнішні картинки
// поштові клієнти часто блокують
$dataUri = 'data:image/svg+xml;base64,' . base64_encode($svg);

Для PNG знадобиться Imagick або GD - SVG обходиться без розширень взагалі, і це ще одна причина віддавати саме його.

Щоб вбудувати готовий SVG у лист чи CSS, його треба перевести в data URI.