Генерація QR-кодів в PHP

26

Від автора: широко застосовуються в різних сучасних додатках QR-коди можна бачити на банки кока-коли, візитних картках, в суші-барах і музеях. У даному уроці ми розглянемо генерацію QR коду засобами PHP. QR-код – це двовимірний штрих-код, винайдений в Японії. Він запатентований, але творці, корпорація Denso Wave, вирішили його не використовувати і залишили стандарт відкритим для всіх. З тих пір код став набагато популярнішим за здатністю включати в єдине зображення безліч даних і поширення смартфонів з скануючи додатками.

У цій статті я покажу вам, як QR-коди з легкістю генеруються в PHP-додатку і поділюся ідеями того, де і як їх застосовувати, як згенерувати qr код. Для генерації QR-кодів ми використовуємо PHP QR Code – бібліотеку, написану в PHP для генерування QR-кодів, якою для створення зображень не потрібно нічого, крім стандартного графічного розширення GD2.

Генеруємо перший QR-код

Почніть з закачування останньої бібліотеки PHP QR Code з GitHub. Вважаю, що вам це вдалося, і ви зможете пройти в середовищі розробки http://localhost/phpqrcode і виявите, що демо-версія працює. Можете вставити будь-який вподобаний вам текст в поле даних, щоб конвертувати його в зображення QR-коду, як показано внизу на скріншоті. Якщо виникли які-небудь проблеми, переконайтеся, що у вас встановлений PHP з розширенням GD2, при необхідності двічі перевіривши це на сторінці інформації PHP.

Генерація QR-кодів в PHP

Створіть новий скрипт PHP з наступним кодом:

Бачите, як просто? З допомогою двох рядків, ви освоїли генерацію QR-коду для своїх веб-додатків на PHP. Можливості нескінченні! Але стривайте, це явно не все. У бібліотеки є безліч гідних розгляду властивостей.

Властивості бібліотеки PHP QR Code

Для повного уявлення спробуйте цей код:

Перший параметр визначає текст або дані, які будуть закодовані в зображенні, і передається як звичайна рядок. Другий параметр – це назва вихідного файлу до згенеровані PNG-зображення. Значення за замовчуванням – логічне значення false, в цьому випадку зображення скидається в браузер.

Третій параметр – рівень корекції помилок для згенерованого штрих-коду, переданого як рядок з єдиною літери. Вона встановлює, скільки кодових слів даних (8 біт на одне кодове слово) можна зберегти для спотвореного або пошкодженого зображення QR-коду за допомогою алгоритму корекції помилок Ріда-Соломона (Reed-Solomon error correction algorithm). Чим вище рівень корекції, тим менше може бути інформаційна ємність штрих-коду для даного виміру. Нижче наведена таблиця, що відображає рівні з процентним співвідношенням їх відновлення і константами рядків, застосовуваними при виклику QRcode::png). (Я взяв таблицю зі статті Wikipedia про QR-кодах, а сигнатуру методу – з бібліотеки PHP QR Code.)

Генерація QR-кодів в PHP

Четвертий параметр визначає розмір кожного квадрата штрих-коду в пікселях. Кожен квадрат коду (також званий «пікселями» або «модулями») – 4×4px. П’ятий параметр визначає межу білого поля навколо штрих-коду в квадратах коду (наприклад, поле 16px з кожної сторони квадрата коду розміром 4×4px).

Бібліотека підтримує експорт зображень PNG, SVG і EPS, і можна генерувати QR-коди в будь-якому з цих форматів, просто змінюючи назву методу png) на svg() або eps() і застосовуючи правильне розширення файлового імені згенерованого зображення.

Також можна змінювати колір фону і зображення переднього плану, передаючи їх як додаткові параметри:

Шостий параметр (у вищенаведеному прикладі false) здається марним. Для збереження у файл і експорту в браузер він повинен бути true, але у мене він просто не працював після того, як я відзначив його галочкою кілька разів, тому залиште його false.

В PHP бібліотеці генерації QR-коду є безліч властивостей, які при бажанні можна встановити, наприклад, кешування і встановлення контрольних точок створення зображення.

Отримання розміру остаточного штрих-коду

Щоб отримати остаточний розмір зображення, можна застосувати просту формулу (так як квадратне зображення, потрібно всього лише порахувати один вимір, а друге буде таким же):

Розмір зображення (px) = (кількість пікселів на модуль) × ( розмір модуля + 8 )

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

Виберіть колонку типу рядка (інформаційні біти, числова, алфавітно-цифрова, бінарна або кандзі). В них зазначена максимальна довжина даних даного типу для впаковування в окремий штрих-код. Раніше я застосовував алфавітно-цифрову, але якщо ви використовуєте рядка, закодовані в UTF-8, то можете використовувати бінарний тип. Кандзі – для японців, але автором бібліотеки не тестувалася.

Виберіть потрібний рівень корекції помилок і знайдіть на своїй довжині рядка мінімальний номер версії, який може обробити щонайменше стільки символів. У прикладі використані 24 або більше символів алфавітно-цифрового типу на рівні L, так що значення буде версією 1 у першому ряду.

Отримайте модуль вибраного вами модуля, тут це виявиться модуль 21×21, де його розмір – 21. Бібліотека PHP QR Code бере наступну версію для гарантії безпеки та збільшення місця, так що візьміть версію побільше.

Якщо ви порахуєте розмір модуля для версії, використаної в прикладі, то виявите, що розмір отриманого зображення повинен бути:

Розмір зображення = 4 × ( 21 + 8 ) = 116×116px

Але замість цього вийшло зображення 132×132px. PHP QR Code взяв наступну версію (версію 2 замість версії 1, або просто модуль 25×25), тому насправді згенерований розмір:

Розмір зображення = 4 × ( 25 + 8 ) = 132×132px

Найбільш часте застосування QR-кодів

Найбільш часте застосування QR-кодів – кодування url’ов вебсайту, наприклад, на сторінці фанатів facebook’а свого останнього продукту вашої компанії та ін. Варіантів безліч. Особисто я застосовую його візитною карткою і кодуй URL до свого профілю LinkedIn.

Генерація QR-кодів в PHP

В QR-кодах також можна зберігати телефонні номери, vCard’и і адреси електронної пошти. Деякі сайти ставлять їх біля блогових статей як закладки.

Коли справа доходить до застосування QR-кодів, вас обмежує тільки інформаційна ємність коду і простір, в якому ви його покажете.

Резюме з генерації QR кодів

У цій статті ми розглянули, як з легкістю генерувати QR-коди, qr-коди картинки) в PHP для різних друкованих і мережевих додатків. Я також показав вам, як заздалегідь розрахувати остаточний розмір генерованого зображення, так як у бібліотеці ця можливість не передбачена. Коротко – робота з QR-кодами може виявитися приємним і є безліч можливостей. А як ви покращуєте свої PHP-додатки з їх допомогою?