Php qr code не работает

Обновлено: 04.07.2024

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

Что требуется для генерации QR

Для генерации QR-кодов удобно использовать сторонние библиотеки, которые позволяют внедрять их в различные проекты. Одной из популярных библиотек для генерации QR-кодов является «PHP QR Code». Для работы с этой библиотекой в PHP нам так же потребуется библиотека GD, которая как правило бывает уже установлена по умолчанию на сервере.
Перед началом работы с библиотекой, скачиваем её в директорию своего проекта. Далее можем приступать к работе с ней.

Простые примеры использования

Генерировать QR-коды довольно просто, достаточно подключить библиотеку, а затем обратиться к методу QRcode::png(). Созданный QR-можно сохранять в файл, либо выводить его в браузер.

Сохранение QR-кода в файл

Вывод QR-кода в браузер

Параметры использования метода

В самом деле количество параметров, которые могут быть переданы методу гораздо больше. Давайте подробнее рассмотрим их назначение.
Синтаксис:

$text – строка для кодирования;
$outfile – путь для сохранения файла, по умолчанию false – будет вывод в браузер;
$level – уровень коррекции ошибок (L – низкий, по умолчанию, M – средний, Q – Четверть, H – Высокий);
$size – размер «точки», по умолчанию 3px;
$margin – отступ от краёв, указывается в единицах, как и в $size;
$saveandprint – если true, то одновременно будет сохранён в файл и показан в браузере.

Специальные ссылки в QR-коде

Вот ещё одна интересная особенность использования QR кодов – это специальные ссылки для приложений в мобильных устройствах. Мы можем закодировать в QR данные, которые сообщат мобильному устройству открыть приложение и сообщить им какие-либо данные, например, такие как контактный номер телефона.

Набор номера телефона из QR

Форма отправки SMS на номер из QR

Добавление нового контакта из QR

Открытие почтового клиента Email из QR

Дозвон по Skype

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

Настройка внешнего вида QR-кода

Что касается внешнего вида QR-кода, то мы можем изменять цвет фона, либо делать его прозрачным, а также менять цвет пикселей. Кроме того, есть возможность добавить в центре свой логотип. Для изменения фона изображения мы дополнительно будем использовать функции библиотеки GD.

Задаём цвет фона для QR-кода

Прозрачный фон для QR-кода
Иногда бывает нужно накладывать QR-код на какой-либо другой фон, для этих задач удобно использовать прозрачный фон. Т.к. изображение мы генерируем в формате PNG, то задать прозрачный фон в PHP не так сложно.

Изменение цвета самого QR-кода
В примерах выше мы меняли цвет фона, а также делали его прозрачным. Кроме самого фона мы можем так же менять цвет самого QR-кода. Делается это аналогичным образом с небольшим отличием в коде.

Добавляем логотип в QR-код
Для некоторых задач иногда требуется добавить в QR-код свой логотип, сделаем его тем самым более уникальным. С технической точки зрения, делать этого конечно не желательно, т.к. закрывая какую-то часть кода логотипом, мы усложняем его чтение. Однако, сделать это вполне реально, с учётом того, что его придётся генерировать с максимальным уровнем коррекции ошибок, дабы не потерять читаемость кода.

Есть небольшие нюансы в коде. Т.к. библиотека генерирует файл в формате PNG-8, при склейке QR-кода и лого мы могли бы получить потерю цветов у логотипа. По этой причине, в примере PNG8 преобразуется в PNG24 чтобы избежать потери качества.

После использования PHP QrCode lib я обнаружил, что по какой-то причине при использовании динамической страницы со скриптами и диалоговыми окнами (JQuery) при попытке вывести QR-код в формате .jpg я получаю странные символы вместо фактического сгенерированного файла .jpg. .

Вот что я пробовал:

Создал отдельный файл с:

Файл, открытый в диалоговом окне с использованием пользовательского интерфейса JQuery:

В этой попытке по какой-то причине я получаю несколько забавных символов:

Сообщите мне свои идеи,

После помещения header('Content-Type: image/png'); в файл, который открывает JQuery, нет сигары.

Вот фактический файл:

2 ответа

Чтобы понять, что это происходит, представьте, что вы открываете обычный файл PNG в текстовом редакторе и просто копируете / вставляете его содержимое прямо в свой HTML-файл. Изображение не будет отображаться - это будет просто мусор, как вы видите.

Чтобы включить изображение в файл HTML, вам необходимо использовать тег <img> и указать URL-адрес изображения. В этом случае URL-адрес изображения будет сценарием PHP, который ничего не выводит, кроме содержимого PNG, например:

Затем в qrcode.php сгенерируйте изображение:

Если вам нужна некоторая информация с HTML-страницы для создания изображения, вы можете включить ее в качестве параметров запроса в URL-адрес, например:

А затем введите эти значения в свой PHP следующим образом:

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

Подробнее об URL-адресах данных base64 можно узнать здесь и здесь.

Убедитесь, что у вас есть следующий php-код для создания правильного заголовка Content-Type , чтобы браузер знал, как отображать полученные данные.

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

стоит добавить, что в дополнение к библиотеке QR-кодов, размещенной @abaumg компания Google предоставляет QR коды API QR коды API большое спасибо @Toukakoukan на ссылка обновления .

чтобы использовать это , в основном:

  • 300x300 это размер QR-изображения, которое вы хотите создать,
  • the chl - строка в кодировке url вы хотите изменить в QR-код, и
  • the choe это (опционально) кодирование.

ссылка, выше, дает более подробную информацию, но для ее использования просто есть src изображения указывают на манипулируемое значение, например:

самый простой способ генерировать QR-коды с PHP-это библиотека phpqrcode.

на библиотека phpqrcode очень быстро настраивается, и документация API легко понять.

1. QR-код шифратора

сначала включите библиотеку из вашего локального пути

затем, чтобы вывести изображение непосредственно как поток PNG например:

чтобы сохранить результат локально как PNG-изображение:

2. QR-декодер код

см. также кодом ZXing декодер:

довольно полезно проверить выход.

3. Список формата данных

список формата данных, который можно использовать в QR-коде в соответствии с типом данных :

на библиотека endroid/QrCode прост в использовании, в хорошем состоянии и может быть установлен с помощью composer. Существует также bundle использовать непосредственно с Symfony.

The generated QRCode

QR-кода-генератор на Github. Простейший скрипт и работает как шарм.

  • нет зависимости от третьей стороны
  • нет ограничений на количество QR-кода поколения

Я знаю, что вопрос в том, как генерировать QR-коды с помощью PHP, но для других, кто ищет способ генерировать коды для веб-сайтов, делающих это в чистом javascript, это хороший способ сделать это. The в jQuery-QR-кода плагин jQuery делает это хорошо.

Я иногда использую Google qrcode api, но мне это не совсем понравилось, потому что для доступа к сгенерированному изображению мне нужно быть в Интернете.

Я сделал небольшое исследование comand-line и узнал, что linux имеет инструмент командной строки qrencode для генерации QR-кодов.

Я написал этот небольшой скрипт. И хорошая часть заключается в том, что сгенерированное изображение имеет размер менее 1 КБ. Ну, предоставленные данные-это просто url.

затем в html загружаю изображение:

вам просто нужно установить его. [большинство приложений для обработки изображений в linux установили бы его под капотом без вашего ведома.

QR-коды являются популярным типом двумерного штрих-кода. Они также известны как жесткие ссылки или гиперссылки физического мира. QR-коды хранят до 4296 буквенно-цифровых символов произвольного текста. Этот текст может быть чем угодно, например, URL, контактная информация, номер телефона, даже стихотворение! QR-коды могут быть считаны оптическим устройством с соответствующим программным обеспечением. Такие устройства варьируются от специальных считывателей QR-кодов до мобильных телефонов.

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

Есть 2 способа достижения вашей цели, либо вы используете библиотека, которая генерирует QR-коды и позволяют настроить его (возможна настройка логотипа) или Вы можете реализовать это самостоятельно с помощью PHP, Вы можете отобразить изображение на другом изображении, это означает, что мы собираемся отобразить логотип поверх уже созданного изображения QR-кода.

1. Используйте библиотеку

Библиотеки делают вашу жизнь проще, в этом случае для реализации собственного логотипа в QR-коде вы можете использовать Пакет Endroid QRCode. Эта библиотека основана на QRcode Perl CGI PHP скрипты от Y. Swetake, и это помогает вам генерировать изображения, содержащие QR-код.

Или отредактируйте свой composer.json вручную и выполните установку composer:

Теперь, после установки, включите класс с оператором использования в ваш класс:

И создайте свой первый QR-код с логотипом, используя следующий код:

Вернуть QR-код с логотипом в качестве ответа

Сохранить QR-код с логотипом на сервере

Выполнение любого из предыдущих методов должно генерировать следующий QRCode:

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

2. Ручная реализация

Эта функция надежна, так как QR-код будет по-прежнему читаемым, даже если в центре будет небольшое изображение.

Быстрый пример

В этом случае мы будем использовать простой фрагмент, который будет извлекать QR-код из API Chart из Google, который возвращает сгенерированный QR-код.

Благодаря своей простоте является (в моем случае) самым простым решением.

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

Основное устранение неполадок

Логотип полностью прозрачный и покрывает QR-код

Эта проблема иногда возникает, когда существует прозрачность, но она удаляет область, где находится QR-код, например:

Чтобы решить это, нам нужно использовать следующие строки

Эти строки будут препятствовать тому, чтобы прозрачность покрывала QR-код, Однако это будет по-прежнему с прозрачностью, как нам нужно.

Наконец наш фиксированный фрагмент будет выглядеть так:

Хотя есть библиотека с открытым исходным кодом, которая поможет вам, вы все равно можете добиться этого с помощью простого PHP-кода.

рекомендации

Как вы можете видеть во втором методе, мы не используем какую-либо библиотеку. Мы просто загружаем ответ QR-изображения из API Google Charts и наносим на него наш логотип. Однако вы можете не захотеть зависеть от сервера Google, так как этот API устарел в соответствии с домашняя страница здесь и они рекомендуют вам использовать активно поддерживаемый API Google Charts (который не поддерживает QR-коды).

Мы рекомендуем использовать библиотеку QR-кода с открытым исходным кодом в качестве TCPDF (который также генерирует PDF) или самый распространенный и известный PHP QR-код.

PHP QR-код библиотека с открытым исходным кодом (LGPL) для создания QR-кода, двумерного штрих-кода. На основе библиотеки libqrencode C предоставляет API для создания изображений штрих-кода QR Code (PNG, JPEG благодаря GD2). Реализовано исключительно на PHP, без внешних зависимостей (кроме GD2, если необходимо).

От автора: широко применяемые в различных современных приложениях 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 со следующим кодом:


Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

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

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

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

Первый параметр определяет текст или данные, которые будут закодированы в изображении, и передается как обычная строка. Второй параметр – это название выходного файла к сгенерированному 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() и применяя правильное расширение файлового имени сгенерированного изображения.

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

Читайте также: