Динамическое создание QR-кода с помощью PHP [закрыто]
Я пытаюсь генерировать QR коды на своем сайте. Все, что им нужно сделать, это иметь URL-адрес в них, который предоставит переменная на моем сайте. Какой был бы самый простой способ сделать это?
7 ответов:
стоит добавить, что, в дополнение к библиотеке QR-кодов, опубликованной @abaumg компания Google предоставляет
QR-коды APIQR-коды APIбольшое спасибо @Toukakoukan на ссылка обновления.чтобы использовать это , в основном:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
300x300
это размер QR-изображения, которое вы хотите создать,- the
chl
-это строка в кодировке url вы хотите изменить в QR-код, и- the
choe
это (опционально) кодирование.ссылка, приведенная выше, дает более подробную информацию, но для ее использования просто есть
src
изображения указывают на манипулируемое значение, например:<img src="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" />
демо:
самый простой способ генерировать QR-коды с помощью PHP-это библиотека phpqrcode.
The библиотека phpqrcode очень быстро настроить и документация API легко понять.
в дополнение к ответу абаумга Я приложил 2 примера в
PHP
от http://phpqrcode.sourceforge.net/examples/index.php1. QR-код шифратора
сначала включите библиотеку из вашего локального пути
include('../qrlib.php');
затем, чтобы вывести изображение непосредственно как поток PNG сделать например:
QRcode::png('your texte here...');
чтобы сохранить результат локально в виде изображения PNG:
$tempDir = EXAMPLE_TMP_SERVERPATH; $codeContents = 'your message here...'; $fileName = 'qrcode_name.png'; $pngAbsoluteFilePath = $tempDir.$fileName; $urlRelativeFilePath = EXAMPLE_TMP_URLRELPATH.$fileName; QRcode::png($codeContents, $pngAbsoluteFilePath);
2. QR-код декодер
см. также zxing декодер:
http://zxing.org/w/decode.jspx
довольно полезно проверить выход.
3. Список формата данных
список форматов данных, которые вы можете использовать в своем QR-коде в соответствии с типом данных :
- URL сайта:http://stackoverflow.com (включая протокол
http://
)- адрес электронной почты: mailto:name@example.com
- номер телефона: +16365553344 (включая код страны)
- SMS сообщение: smsto: номер: сообщение
- MMS сообщение: mms: номер: тема
- YouTube Video: youtube: / / ID (может работать на iPhone, не стандартизирован)
дополнительные данные типа на http://blog.thenetimpact.com/2011/07/decoding-qr-codes-how-to-format-data-for-qr-code-generators/
The библиотека endroid/QrCode прост в использовании, хорошо поддерживается и может быть установлен с помощью composer. Существует также bundle использовать непосредственно с Symfony.
установка :
$ composer require endroid/qrcode
использование :
<?php use Endroid\QrCode\QrCode; $qrCode = new QrCode(); $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 = new Response($qrCode->get(), 200, array('Content-Type' => $qrCode->getContentType()));
qrcode-generator на Github. Самый простой скрипт и работает как шарм.
плюсы:
- нет зависимости от третьих лиц
- нет ограничений на количество QR-кода поколения
Я знаю, что вопрос заключается в том, как генерировать QR-коды с помощью PHP, но для других, кто ищет способ генерировать коды для веб-сайтов, делающих это в чистом javascript, это хороший способ сделать это. Элемент в jQuery-QR-кода плагин jQuery делает это хорошо.
Я использую Google qrcode api в течение некоторого времени, но мне это не совсем нравится, потому что он требует, чтобы я был в интернете, чтобы получить доступ к сгенерированному изображению.
Я провел небольшое исследование командной строки и выяснил, что в linux есть инструмент командной строки
qrencode
для генерации QR-кодов.Я написал этот небольшой скрипт. И хорошая часть заключается в том, что сгенерированное изображение имеет размер менее 1 КБ. Ну предоставленные данные-это просто url.
$url = ($_SERVER['HTTPS'] ? "https://" : "http://").$_SERVER['HTTP_HOST'].'/profile.php?id='.$_GET['pid']; $img = shell_exec('qrencode --output=- -m=1 '.escapeshellarg($url)); $imgData = "data:image/png;base64,".base64_encode($img);
затем в html я загружаю изображение:
<img class="emrQRCode" src="<?=$imgData ?>" />
вам просто нужно установить его. [большинство приложений для обработки изображений на linux установили бы его под капотом без вашего ведома.