Динамическое создание QR-кода с помощью PHP [закрыто]
98
Я пытаюсь создать QR-коды на своем сайте. Все, что им нужно сделать, это указать в них URL-адрес, который предоставит переменная на моем сайте. Какой способ сделать это проще всего?
300x300 это размер QR-изображения, которое вы хотите сгенерировать,
это chlстрока в кодировке url, которую вы хотите преобразовать в QR-код, и
choeявляется ( по желанию) кодирования.
Ссылка, приведенная выше, дает более подробную информацию, но для ее использования достаточно srcизображения, указывающего на изменяемое значение, например:
<imgsrc="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8"title="Link to Google.com"/>
Есть ли какие-то ограничения на использование Google API ?. Я имею в виду ограничения, такие как: количество запросов в заданное время и т. Д.
Лобо
11
Следует отметить, что это устарело. Google планирует продолжить поддержку до 2015 года. Так что, как всегда, будьте осторожны.
blainarmstrong
4
@Lobo Согласно их документации : « Нет ограничений на количество вызовов в день, которые вы можете делать в Google Chart API. Однако мы оставляем за собой право блокировать любое использование, которое мы считаем неправомерным ».
Александру Гузинский
3
Я нахожу ответ от @abaumg лучше, поскольку он не зависит от третьих сторон, таких как Google ...
arod
4
Сентябрь 2019 г. - все еще работает!
Anupam
87
Самый простой способ сгенерировать QR-коды с помощью PHP - это библиотека phpqrcode .
+1 это более точно отвечает на вопрос, вы можете сгенерировать QR-код самостоятельно, не ограничиваясь ограничениями Google, установленными для запросов. Это также гарантирует, что ваш веб-сайт работает, даже если контракт конечной точки Google изменится.
Санни Р Гупта
Справедливое предупреждение: похоже, что эта библиотека «мертвая» - она не обновлялась автором с октября 2010 года и имеет пару исправлений в системе отслеживания проблем, которые пользователям библиотеки следует рассмотреть перед использованием библиотеки.
CubicleSoft,
а вот как преобразовать его в стандарт mvc любые идеи !!!!
саураб камбл
@CubicleSoft, я думаю, разработчик серьезно отнесся к вашему комментарию и сразу же обновил его
mokNathal
@mokNathal - Я не вижу здесь ничего особенного. Самый последний выпуск, доступный на странице загрузок, все еще
выпущен в
24
Библиотеку phpqrcode очень быстро настроить, а документацию по API легко понять.
эта библиотека, похоже, не работает для различных входов, хотя небольшой и простой текст в порядке
duckduckgo
Не могли бы вы привести пример?
RafaSashi
ничего особенного, когда я делаю $ codeContents = "www.example.com", все в порядке, но если я делаю $ codeContents = "www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttIr1B0=", оно не показывало правильное изображение.
duckduckgo
Я не могу воспроизвести ошибку. Он отлично работает с QRcode :: png ('www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttI r1B0 ='); возможно, это как-то связано с заголовками
RafaSashi
2
Могу ли я использовать библиотеку php-qrcode в коммерческих целях, например, для разработки веб-сайта, в какой-то части которого требуется код qr?
Suneeta Singh
16
Библиотека endroid / QrCode проста в использовании, в хорошем состоянии и может быть установлена с помощью composer. Также есть пакет, который можно использовать напрямую с Symfony.
Установка:
$ composer require endroid/qrcode
Использование :
<?phpuseEndroid\QrCode\QrCode;
$qrCode =newQrCode();
$qrCode->setText('Life is too short to be generating QR codes')->setSize(300)->setPadding(10)->setErrorCorrection('high')->setForegroundColor(array('r'=>0,'g'=>0,'b'=>0,'a'=>0))->setBackgroundColor(array('r'=>255,'g'=>255,'b'=>255,'a'=>0))->setLabel('Scan the code')->setLabelFontSize(16)->setImageType(QrCode::IMAGE_TYPE_PNG);// now we can directly output the qrcode
header('Content-Type: '.$qrCode->getContentType());
$qrCode->render();// or create a response object
$response =newResponse($qrCode->get(),200, array('Content-Type'=> $qrCode->getContentType()));
Ивазару, сэр, как я могу использовать, setText()если у меня НЕСКОЛЬКО данных? Например, у меня есть $a = 1, $b = 2, $c = 3?. Мне нужно использовать более ОДНОГО предложения или строки. Как я могу это сделать?
Поскольку setTextметод принимает только один параметр, я думаю, вам следует объединить свои переменные в один перед его передачей. Но я не уверен, что правильно понимаю вашу проблему, возможно, вам стоит открыть проблему в репозитории библиотеки.
Iwazaru
Ивазару, у меня есть ответ, сэр ..
Хочешь поделиться? ;)
Iwazaru 02
1
Конечно :) Я использовал implode () в php для объединения всех данных, а затем при необходимости explode (). Вот и все, сэр :)
10
qrcode-generator на Github. Скрипт простейший и работает как шарм.
Я не могу найти никаких документов по этому поводу, но выглядит отлично!
Björn C
@ praba230890 не могли бы вы привести еще несколько примеров с этим скриптом? Я пытаюсь получить некоторую контактную информацию в QR-коде 300x300 пикселей. Я установил / загрузил скрипт на моем локальном хосте, и sample_html.php работает. Но двое других - нет. мой японский не то, что хорошо (хорошо я буду использовать Google Translate)
Alex
о, а будет ли это быстрее / лучше библиотеки phpqrcode?
Alex
это безнадежно.
Навджот Singh
5
Некоторое время я использую google qrcode api, но мне это не очень понравилось, потому что для доступа к сгенерированному изображению мне нужно быть в Интернете.
Я провел небольшое исследование командной строки и обнаружил, что в Linux есть инструмент командной строки qrencodeдля генерации qr-кодов.
Я написал этот небольшой сценарий. И что хорошо, размер сгенерированного изображения составляет менее 1 КБ. Что ж, предоставленные данные - это просто URL-адрес.
Вам просто нужно установить его. [большинство приложений для работы с изображениями в Linux установили бы его под капотом, даже если бы вы не осознали.
Что будет, если вы пойдете кhttp://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Doktor J
Здесь объясняется escapeshellarg (для тех, кому интересно) - stackoverflow.com/a/22739494/195722 . Лично я не стал бы каждый раз обрабатывать команду (особенно для общедоступного поколения), и я бы определенно использовал регулярное выражение, чтобы убедиться, что то, что они передали, было строкой, которую я ожидал.
Натали Адамс
хорошо работает на ubuntu 16.04
Asuquo12
4
Я знаю, что вопрос в том, как сгенерировать QR-коды с помощью PHP, но для тех, кто ищет способ генерировать коды для веб-сайтов, делать это на чистом javascript - это хороший способ сделать это. JQuery-QRCode JQuery плагин делает это хорошо.
Я использую плагин Jquery github.com/lrsjng/jquery-qrcode какое-то время, тоже симпатичный. Однако вывод только двоичный. Так что, если вам нужно сгенерировать и сохранить изображение в формате PNG, это не слишком поможет. Вот почему большинству разработчиков, читающих этот вопрос, нужен PHP.
Кай Ноак
Это можно загрузить JS-сгенерированные данные изображения 100% в клиенте.
Куинн Комендант
Извините за непонятность. Я имел в виду «сохранить на стороне сервера» - невозможно только с Javascript.
Ответы:
Стоит добавить, что в дополнение к библиотеке QR-кодов, опубликованной @abaumg , Google предоставляет
QR-коды APIQR Codes API большое спасибо @Toukakoukan за обновление ссылки .Чтобы использовать это, в основном:
300x300
это размер QR-изображения, которое вы хотите сгенерировать,chl
строка в кодировке url, которую вы хотите преобразовать в QR-код, иchoe
является ( по желанию) кодирования.Ссылка, приведенная выше, дает более подробную информацию, но для ее использования достаточно
src
изображения, указывающего на изменяемое значение, например:Демо:
источник
Самый простой способ сгенерировать QR-коды с помощью PHP - это библиотека phpqrcode .
источник
Библиотеку phpqrcode очень быстро настроить, а документацию по API легко понять.
В дополнение к ответу abaumg я приложил 2 примера
PHP
из http://phpqrcode.sourceforge.net/examples/index.php1. Кодировщик QR-кода
сначала включите библиотеку с вашего локального пути
затем для вывода изображения напрямую, как поток PNG, например:
чтобы сохранить результат локально как изображение PNG:
2. Декодер QR-кода.
См. Также декодер zxing :
http://zxing.org/w/decode.jspx
Довольно полезно проверить вывод.
3. Список формата данных
Список форматов данных, которые вы можете использовать в своем QR-коде в соответствии с типом данных:
http://
)источник
Библиотека endroid / QrCode проста в использовании, в хорошем состоянии и может быть установлена с помощью composer. Также есть пакет, который можно использовать напрямую с Symfony.
Установка:
Использование :
источник
setText()
если у меня НЕСКОЛЬКО данных? Например, у меня есть$a = 1
,$b = 2
,$c = 3
?. Мне нужно использовать более ОДНОГО предложения или строки. Как я могу это сделать?setText
метод принимает только один параметр, я думаю, вам следует объединить свои переменные в один перед его передачей. Но я не уверен, что правильно понимаю вашу проблему, возможно, вам стоит открыть проблему в репозитории библиотеки.qrcode-generator на Github. Скрипт простейший и работает как шарм.
Плюсы:
источник
Некоторое время я использую google qrcode api, но мне это не очень понравилось, потому что для доступа к сгенерированному изображению мне нужно быть в Интернете.
Я провел небольшое исследование командной строки и обнаружил, что в Linux есть инструмент командной строки
qrencode
для генерации qr-кодов.Я написал этот небольшой сценарий. И что хорошо, размер сгенерированного изображения составляет менее 1 КБ. Что ж, предоставленные данные - это просто URL-адрес.
Затем в html загружаю изображение:
Вам просто нужно установить его. [большинство приложений для работы с изображениями в Linux установили бы его под капотом, даже если бы вы не осознали.
источник
http://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Я знаю, что вопрос в том, как сгенерировать QR-коды с помощью PHP, но для тех, кто ищет способ генерировать коды для веб-сайтов, делать это на чистом javascript - это хороший способ сделать это. JQuery-QRCode JQuery плагин делает это хорошо.
источник