Генерируем QR-код в своих приложениях.

Генерируем QR код на PHP.

 В этой статье мы займёмся вопросом «Как сгенерировать QR код в своих приложениях».  Напишем под языки PHP, Delphi и C#. Причем под PHP будем писать в 2 разных вариантах, один более предпочтителен, нам не придётся таскать с проектом гору файлов, второй «привет из прошлого», тем не менее довольно популярный и не зависит от работоспособности ресурса, чьё API мы и будем использовать.

Вариант №1.

Поскольку в стандартной поставке php ничего для генерации QR кодов нет, придётся воспользоваться сторонними библиотеками. Сразу обращаем внимание на PHP QR Code, который лежит на гитхабе — GitHub PHP QR Code.  Всё что нам нужно сделать, это добавить файл qrlib.php в своей проект, остальное подключится само.
Собственно опробовать саму библиотеку можно ничего не создавая и не подключая, просто запускаем индексный файл из папки проекта и перед нами появится такая тестовая форма, в которой и можно генерировать QR коды. На этом месте следует сделать важное уточнение … данная библиотека не будет работать без поддержки  GD2 с поддержкой PNG. Поэтому если у вас она не подключена, то идём в php.ini , находим там данное расширение и убираем у него символ комментария.

 

Наш QR код создаётся в формате PNG … нас это, конечно, вполне устраивает, но данная библиотека может создавать QR коды и в формате SVG.

Разбираем основной функционал.

Собственно весь процесс генерации QR кода заключается всего в одной функции:

QRcode::png(‘PHP QR Code : )’, ‘test.png‘, ‘L‘, 4, 2);

Но что означают все эти параметры ? Давайте заглянем в файл INSTALL. Тут мы видим следующие строки:

//write code into file, Error corection lecer is lowest, L (one form: L,M,Q,H)

//each code square will be 4?4 pixels (4x zoom)

//code will have 2 code squares white boundary around

QRcode::png(‘PHP QR Code : )’, ‘test.png’, ‘L’, 4, 2);

 
По порядку QRcode::png означает что наш QR код будет генерироваться в формате png, если хотите QR код в SVG формате, тогда указывайте QRcode::svg  Только в качестве второго параметра тоже не забудьте поменять расширение файла.Теперь давайте разберем сами параметры:

(‘PHP QR Code : )’, ‘test.png’, ‘L’, 4, 2);

PHP QR Code : ) — это текст, либо ссылка, которую мы хотим закодировать.

test.png — файл, в который весь этот QR-код будет сохраняться.

L — уровень коррекции ошибок, константа, допустимы следующие значения (от меньшего к большему) L — M — Q — H, от уровня коррекции ошибок зависит и плотность данных, что впрочем вполне естественно. Увеличивается и размер изображения, это тоже нужно учитывать. 

QRcode::png(‘PHP QR Code : )’, ‘test.png’, ‘L’, 4, 2);

Предпоследний параметр это длина и ширина нашего модуля (модуль это отдельно взятый квадратик из QR кода) 

Последний параметр это ширина нашей рамки вокруг QR кода, внимаине(!), в модулях, не в пикселях, а именно в модулях, значение 2 указывает на то, что рамка будет содержать 2 модуля, т.е. в данном случае иметь ширину 8px. Если не хотите рамку вокруг QR кода вообще, тогда в качестве параметра указывайте ноль.

Рамку на белом фоне можно увидеть выделив наши коды, справа код без рамки и слева код с рамкой в 1 модуль.

QRcode::png(‘http://blogee.ru’, ‘test.png’, ‘L’, 4, 2, false);

Как видите, в конце у нас появился ещё один параметр, при указании false в качестве шестого параметра, скрипт должен сохранить картинку и отдать её в браузер. Но никакого эффекта  не замеченно, поэтому переходим к седьмому параметру.

Пример кода скрипта:

<?phpinclude

«qrlib.php»;

$background = 0xee00ff;

QRcode::png(‘http://blogee.ru’,’test.png’,’L’, 8, 0, true, $background);

?>
<img src=»test.png» alt=»qrlib»/>

Седьмой параметр — $background это цвет, которым можно закрасить пустые области вокруг черных модулей. Получается вот такой «гламур»:

QRcode::png(‘http://blogee.ru’,’test.png’,’L’, 8, 0, true, $background,$foreground);

Последний параметр $foreground позволяет нам раскрасить черные блоки QR кода.

Напишем:  $foreground = 0xFFee22;

Получился вот такой сферический QR код в вакууме.
Ну собственно всё, переходим ко 2 более быстрому и более простому варианту генерации QR кодов.

Читать вариант №2>>

 

Статьи по теме:

Бесплатную электронную библиотеку разместили на площади Рынок во Львове QR-технологии в ретейле С Tele2 всегда есть повод выйти в Интернет QR-код: способ платежа и инструмент маркетинга – два в одном Новая марка из серии «XXI Олимпийские игры в Сочи» Тюмень. Новая табличка с QR-кодом установлена на площади Единства и Согласия в Тюмени. На памятнике С. М. Кирову появится QR-код Об электронных услугах ФНС России расскажут QR-коды Возле одесского памятника вандалы вырвали QR-код весом 150 кг qrSend отправит файлы с компьютера на Android устройство сканированием QR кода