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

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

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

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

Детали урока «Генерация QR кодов с помощью PHP»

Тема: PHP

Сложность: средняя

Генерируем первый 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. Возможности бесконечны! Но погодите, это явно не все. У библиотеки имеется множество достойных рассмотрения свойств.

Свойства библиотеки PHP QR Code

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

<?php
QRcode::png("http://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() и применяя правильное расширение файлового имени сгенерированного изображения.

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

<?php
$backColor = 0xFFFF00;
$foreColor = 0xFF00FF;

// Create a QR Code and export to SVG
QRcode::svg("http://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

Источник: http://phpmaster.com/

Редакция: Команда webformyself.

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree