Генерация QR кода в приложениях на PHP
Популярность QR кодов постепенно набирает высоту благодаря возможности включать большой объем данных в единичное изображение и распространению смартфонов, которые обеспечивают быстрое сканирование и декодирование информации. Двумерный полосовой код был изобретен в Японии. На него имеется патент, но изобретатель, Denso Wave, решил сделать QR код доступным для всех.
В данном уроке мы научимся быстро генерировать QR код в приложении PHP. Для решения задачи будем использовать библиотеку PHP QR Code, которая не зависит от других библиотек.
Генерируем ваш первый QR код
Сначала нужно загрузить библиотеку PHP QR Code с GitHub. Затем распаковать архив в место, где тестируются ваши разработки, например http://localhost/phpqrcode, для запуска демонстрации. Страница проекта будет иметь вид, изображенный на рисунке ниже. Набиваем текст в поле ввода и получаем изображение соответствующего QR кода. Для работы приложения требуется PHP с расширением GD2.
Использовать библиотеку в своих приложениях очень просто:
<?php include "phpqrcode/qrlib.php"; // Создаем и выводим QR код с текстом QRcode::png("My First QR Code");
Две строчки кода позволяют получить готовое изображение QR кода в вашем приложении. Но библиотека предоставляет больше возможностей.
Возможности библиотеки
Полный вызов функции выглядит следующим образом:
<?php QRcode::png("http://www.ruseller.com", "test.png", "L", 4, 4);
Первый параметр определяет текст или данные, которые будут кодированы в изображении.
Второй параметр определяет имя файла, который будет содержать генерированное изображение. По умолчанию здесь располагается логическое значение false, и изображение будет отправляться в браузер.
Третий параметр указывает уровень коррекции ошибок для генерируемого полосового кода, переданного в виде одной строки. Здесь определяется сколько кодовых слов (8-бит на кодовое слово) может быть восстановлено в поврежденном изображении QR кода с помощью алгоритма коррекции ошибок Рида-Соломона. Более высокий уровень коррекции ошибок приводит к меньшей плотности данных в коде заданного размера. Ниже приводится таблица соответствия процента восстановления ошибок и строковых констант для метода QRcode::png()
.
Уровень | Процент восстановления | Константа |
Низкий | 7% | L |
Средний | 15% | M |
Четверть | 25% | Q |
Высокий | 30% | H |
Четвертый параметр определяет размер каждого квадрата в коде (в px). Каждый квадрат в коде (также называется “пиксель” или “модуль”) имеет размер 4×4px по умолчанию.
Пяты параметр указывает размер белой рамки вокруг кода, измеренной в размерах "модуля" (для нашего случая - 16px с каждой стороны для модуля 4×4px).
Библиотека поддерживает экспорт изображений в формате PNG, SVG, и EPS. Для генерации изображения в нужном формате нужно использовать метод с соответствующим именем png(),
svg()
или eps()
.
Также можно изменять цвет фона и кода с помощью дополнительных параметров:
<?php $backColor = 0xFFFF00; $foreColor = 0xFF00FF; // Создаем QR код в формате SVG QRcode::svg("http://phpmaster.com", "test-me.svg", "L", 4, 4, false, $backColor, $foreColor);
Шестой параметр (в примере имеет значение false) при проверке оказался бесполезным. В соответствии с документацией, если он имеет значение true метод должен сохранять изображение и передавать его в браузер. Но описанного результата получить не удалось.
Библиотека также имеет другие возможности, например, кэширование и определение скорости генерации изображения. Но для работы они не имеют большого значения.
Вычисление размера изображения кода
Для определения размера изображения кода можно использовать простую формулу:
Размер изображения (px) = (Пикселей в одном модуле) × (Размер модуля + 8)
Количество пикселей в модуле определяется в четвертом параметре при вызове метода. Размер модуля выбирается из таблицы размеров кода по следующим правилам:
- Выбираем столбец типа данных (data bits, numeric, alphanumeric, binary, или Kanji). Здесь определяется максимальная длина данных определенного типа, которые могут быть закодированы. В нашем примере использовался тип alphanumeric, но если будет кодироваться строка UTF-8, то следует использовать тип binary. Kanji применяется для Японского языка.
- Определяем нужный уровень коррекции ошибок. Находим для заданной длины строки минимальный номер версии, которая может хранить данные такой длины. В примере используется 24 символа с уровнем L, поэтому значение будет из первой строки.
- Получаем размер модуля (для примера будет 21×21). Библиотека PHP QR Code использует следующий номер для обеспечения запаса.
Если вычислить размер модуля для примера, то можно определить размер генерируемого изображения:
Размер изобаржения = 4 × (21 + 8) = 116×116px
Но библиотека PHP QR Code использует модуль следующего размера:
Размер изображения = 4 × (25 + 8) = 132×132px
Использование QR кодов
Наиболее популярное применение QR кодов - кодирование адресов URL веб сайтов, например, страниц фан-клубов в социальных сетях, онлайн описания продуктов и так далее. Ниже приводится пример визитной карточки, на которой QR кодом указан адрес профиля в LinkedIn.
Однако сфера применения QR кодов не имеет границ. В них можно хранить телефонные номера, адреса e-mail, краткие описания товаров и прочее. А использование специальных программ на смартфонах для чтения QR кодов существенно облегчает их использование в практической жизни человека.
Когда встает вопрос об использовании QR кода, реальные ограничения заключаются только в размере данных и пространстве для размещения .
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/JTKX3YEt7q4/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-04-17 » 23 сервиса для эффективного экспресс-аудита любого сайта
- 2024-04-08 » Яндекс переходит на новую версию Wordstat
- 2024-04-08 » Яндекс интегрировал в свой облачный сервис эмпатичную нейросеть
- 2024-04-08 » Новая версия нейросети Claude превзошла по мощности аналоги Google и OpenAI
- 2024-04-08 » Как пользоваться GPT 4 и Claude бесплатно и без VPN
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
- 2024-01-25 » Переменные Gitlab-Ci
- 2024-01-25 » Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- 2024-01-25 » Копирование файлов scp
- 2024-01-21 » Бездепозитные бонусы от казино: обзор условий и правил использования
- 2024-01-18 » Современная обработка ошибок в PHP
- 2024-01-18 » Пример шаблона проектирования MVC в PHP
Там, где речь заходит об очень больших деньгах, разумно не доверять никому. |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.