От автора: широко применяемые в различных современных приложениях QR-коды можно видеть на банках кока-колы, визитных карточках, в суши-барах и музеях. В данном уроке, мы рассмотрим генерацию QR кода средствами PHP. QR-код – это двумерный штрих-код, изобретенный в Японии. Он запатентован, но создатели, корпорация Denso Wave, решили его не использовать и оставили стандарт открытым для всех. С тех пор код стал гораздо популярнее из-за способности включать в единственное изображение множество данных и распространения смартфонов со сканирующими приложениями.
В этой статье я покажу вам, как QR-коды с легкостью генерируются в PHP-приложении и поделюсь идеями того, где и как их применять, как сгенерировать qr код. Для генерации QR-кодов мы используем PHP QR Code – библиотеку, написанную в PHP для генерирования QR-кодов, которой для создания изображений не требуется ничего, помимо стандартного графического расширения GD2.
Генерируем первый QR-код
Начните с закачки последней библиотеки PHP QR Code с GitHub. Полагаю, что вам это удалось, и вы сможете пройти в среде разработки на //localhost/phpqrcode и обнаружите, что демо-версия работает. Можете вставить любой понравившийся вам текст в поле данных, чтобы конвертировать его в изображение QR-кода, как показано внизу на скриншоте. Если возникли какие-либо проблемы, убедитесь, что у вас установлен PHP с расширением GD2, при необходимости дважды проверив это на странице информации PHP.
Создайте новый скрипт PHP со следующим кодом:
1 2 3 4 5 |
<?php include "phpqrcode/qrlib.php"; // create a QR Code with this text and display it QRcode::png("My First QR Code"); |
Видите, как просто? С помощью двух строк, вы освоили генерацию QR-кода для своих веб-приложений на PHP. Возможности бесконечны! Но погодите, это явно не все. У библиотеки имеется множество достойных рассмотрения свойств.
Свойства библиотеки PHP QR Code
Для полного представления попробуйте этот код:
1 2 |
<?php QRcode::png("//phpmaster.com", "test.png", "L", 4, 4); |
Первый параметр определяет текст или данные, которые будут закодированы в изображении, и передается как обычная строка. Второй параметр – это название выходного файла к сгенерированному PNG-изображению. Значение по умолчанию – булево false, в этом случае изображение сбрасывается в браузер.
Третий параметр – уровень коррекции ошибок для сгенерированного штрих-кода, переданного как строка из единственной буквы. Она устанавливает, сколько кодовых слов данных (8 бит на одно кодовое слово) можно сохранить для искаженного или поврежденного изображения QR-кода с помощью алгоритма коррекции ошибок Рида-Соломона (Reed-Solomon error correction algorithm). Чем выше уровень коррекции, тем меньше может быть информационная емкость штрих-кода для данного измерения. Ниже приведена таблица, отражающая уровни с процентным соотношением их восстановления и константами строк, применяемыми при вызове QRcode::png(). (Я взял таблицу из статьи Wikipedia об QR-кодах, а сигнатуру метода – из библиотеки PHP QR Code.)
Четвертый параметр определяет размер каждого квадрата штрих-кода в пикселях. Каждый квадрат кода (также называемый “пикселями” или “модулями”) – 4×4px. Пятый параметр определяет предел белого поля вокруг штрих-кода в квадратах кода (например, поле в 16px с каждой стороны для квадрата кода размером 4×4px).
Библиотека поддерживает экспорт изображений PNG, SVG и EPS, и можно генерировать QR-коды в любом из этих форматов, просто меняя название метода с png() на svg() или eps() и применяя правильное расширение файлового имени сгенерированного изображения.
Также можно менять цвет фона и изображения переднего плана, передавая их как дополнительные параметры:
1 2 3 4 5 6 |
<?php $backColor = 0xFFFF00; $foreColor = 0xFF00FF; // Create a QR Code and export to SVG QRcode::svg("//phpmaster.com", "test-me.svg", "L", 4, 4, false, $backColor, $foreColor); |
Шестой параметр (в вышеприведенном примере 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-кодах также можно хранить телефонные номера, vCard’ы и адреса электронной почты. Некоторые сайты ставят их возле блоговых статей как закладки.
Когда дело доходит до применения QR-кодов, вас ограничивает только информационная емкость кода и пространство, в котором вы его покажете.
Резюме по генерации QR кодов
В этой статье мы рассмотрели, как с легкостью генерировать QR-коды (qr коды картинки) в PHP для различных печатных и сетевых приложений. Я также показал вам, как заранее рассчитать окончательный размер генерируемого изображения, так как в библиотеке эта возможность не предусмотрена. Вкратце – работа с QR-кодами может оказаться приятной и представляет множество возможностей. А как вы улучшаете свои PHP-приложения с их помощью?
Автор: Abdullah Abouzekry
Источник: //phpmaster.com/
Редакция: Команда webformyself.
* Признана экстремистской организацией и запрещена в Российской Федерации.
Комментарии (2)