Статьи

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

QR-коды, широко используемые в недавних приложениях, можно увидеть на банках с колой, визитных карточках, в суши-барах и в музеях. QR Code — это двухмерная спецификация штрих-кода, которая была изобретена в Японии. Запатентовано. но его изобретатель, Denso Wave, решил не использовать его и оставил стандарт открытым для всеобщего блага. С тех пор популярность кода возросла из-за его способности включать много данных в одно изображение и распространения смартфонов со сканирующими приложениями.

В этой статье я покажу вам, как вы можете легко генерировать QR-коды из вашего PHP-приложения, и поделится некоторыми идеями о том, как и когда их использовать. Мы будем использовать PHP QR Code , библиотеку, написанную на PHP для генерации QR-кодов. и который не требует никаких зависимостей, кроме стандартного графического расширения GD2 для создания изображений.

Генерация вашего первого QR-кода

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

Создайте новый скрипт PHP со следующим кодом:

<?php include "phpqrcode/qrlib.php"; // create a QR Code with this text and display it QRcode::png("My First QR Code"); 

Вы видите, как это просто? С помощью всего двух строк кода вы получите совершенно хороший QR-код для своего приложения. Возможности бесконечны! Но подождите, это явно не полная история. Библиотека имеет больше возможностей, на которые стоит обратить внимание.

Особенности библиотеки PHP QR Code

Для полного примера, попробуйте этот код:

 <?php QRcode::png("http://www.sitepoint.com", "test.png", "L", 4, 4); 

Первый параметр указывает текст или данные, которые будут закодированы в изображение и переданы в виде обычной строки. Второй параметр — это имя выходного файла для сгенерированного изображения PNG, если оно есть. Значением по умолчанию является логическое значение false, в этом случае изображение сбрасывается в браузер.

Третий параметр — это уровень коррекции ошибок для сгенерированного штрих-кода, передаваемого в виде одной буквенной строки. Это указывает, какая часть кодовых слов данных (8 битов на кодовое слово) может быть восстановлена ​​для искаженного или поврежденного изображения QR-кода с использованием алгоритма коррекции ошибок Рида-Соломона . Чем выше уровень коррекции, тем меньше объем данных штрих-кода может быть для данного измерения. Ниже приведена таблица, отображающая уровни на их проценты восстановления и строковые константы, используемые при вызове QRcode::png() . (Я скомпилировал таблицу из статьи Википедии о QR-кодах и сигнатуру метода в библиотеке PHP QR-кода.)

Четвертый параметр указывает размер каждого из квадратов штрих-кода, измеренный в пикселях. Каждый кодовый квадрат (также называемый «пикселями» или «модулями») имеет размер 4 × 4 пикселя. Пятый параметр задает границу белого поля вокруг штрих-кода, измеренную в кодовых квадратах (например, поле в 16px с каждой стороны для кодового квадрата 4x4px).

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

Также вы можете изменить цвет фона и переднего плана, передав их в качестве дополнительных параметров:

 <?php $backColor = 0xFFFF00; $foreColor = 0xFF00FF; // Create a QR Code and export to SVG QRcode::svg("http://www.sitepoint.com", "test-me.svg", "L", 4, 4, false, $backColor, $foreColor); 

Шестой параметр (false в приведенном выше примере) представляется бесполезным параметром. Это должно быть верно для сохранения в файл и экспорта в браузер, но у меня просто не получилось после нескольких проверок, так что оставьте его ложным.

В библиотеке есть больше функций, которые вы можете проверить, если хотите, например, кеширование и сравнительный анализ генерации изображений.

Получение размера окончательного штрих-кода

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

  Размер изображения (px) = (Пикселей на модуль) × (Размер модуля + 8) 

Где, как указано ранее, число пикселей на модуль указывается в вызове метода в качестве четвертого параметра, а размер модуля выбирается из этих таблиц размеров штрих-кода следующим образом:

  1. Выберите столбец типа строки (биты данных, числовые, буквенно-цифровые, двоичные или кандзи). Они указывают максимальную длину данных такого типа, которая будет упакована в определенный штрих-код. Ранее я использовал буквенно-цифровые символы, но если вы используете строки в кодировке UTF-8, то вместо этого вы можете использовать двоичный тип. Кандзи для японского языка, но не проверен автором библиотеки.
  2. Выберите желаемый уровень исправления ошибок и для своей длины строки найдите минимальный номер версии, который может обрабатывать как минимум столько символов. В этом примере использовалось 24 или более буквенно-цифровых символов на уровне L, поэтому значение будет первой версией версии 1.
  3. Получите модуль для выбранной версии, здесь это будет модуль 21 × 21, где размер модуля будет 21. Библиотека PHP QR Code поднимает следующую версию взамен, чтобы обеспечить больше места для безопасности, так что поднимитесь еще на одну. ,

Если вы вычислите размер модуля для версии, использованной в примере, вы обнаружите, что размер получаемого изображения должен быть:

  Размер изображения = 4 × (21 + 8) = 116 × 116 пикселей 

Но сгенерированное изображение имеет размер 132 × 132 пикселей. PHP QR Code взял следующую версию (версию 2 вместо версии 1 или просто модуль 25 × 25), поэтому фактический сгенерированный размер будет:

  Размер изображения = 4 × (25 + 8) = 132 × 132 пикселей 

Распространенное использование для QR-кодов

Самым распространенным приложением для QR-кодов является кодирование URL-адресов веб-сайтов, например, таких как фан-страница Facebook о вашем последнем продукте, вашей компании и т. Д. Варианты бесконечны. Я сам использую его на своей визитной карточке и кодирую URL в свой профиль LinkedIn.

QR-коды также могут хранить номера телефонов, визитные карточки и адреса электронной почты. Некоторые сайты помещают их вместе со статьями блога, чтобы выступать в качестве закладок

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

Резюме

В этой статье вы увидели, как легко генерировать QR-коды в PHP для различных печатных и веб-приложений. Я также показал вам, как заранее рассчитать окончательный размер сгенерированного изображения, поскольку библиотека не предоставляет такой возможности. Короче говоря, работа с QR-кодами может быть приятной и открыть много возможностей. Как вы можете улучшить свое PHP-приложение с ними?

Изображение через Fotolia