Динамическое создание QR-кода с помощью PHP [закрыто]
Я пытаюсь создать QR-коды на своем веб-сайте. Все, что им нужно сделать, это иметь URL-адрес, который будет предоставлен переменной на моем сайте. Как проще всего это сделать?
7 ответов
стоит добавить, что в дополнение к библиотеке QR-кодов, размещенной @abaumg компания Google предоставляет QR коды API QR коды 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.
на библиотека phpqrcode очень быстро настраивается, и документация API легко понять.
в дополнение к ответу abaumg Я приложил 2 примера в PHP
от http://phpqrcode.sourceforge.net/examples/index.php
1. 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 Видео: youtube: / / ID (может работать на iPhone, не стандартизирован)
больше типа данных на http://blog.thenetimpact.com/2011/07/decoding-qr-codes-how-to-format-data-for-qr-code-generators/
на библиотека 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()));
QR-кода-генератор на Github. Простейший скрипт и работает как шарм.
плюсы:
- нет зависимости от третьей стороны
- нет ограничений на количество QR-кода поколения
Я знаю, что вопрос в том, как генерировать QR-коды с помощью PHP, но для других, кто ищет способ генерировать коды для веб-сайтов, делающих это в чистом javascript, это хороший способ сделать это. The в jQuery-QR-кода плагин jQuery делает это хорошо.
Я иногда использую Google qrcode api, но мне это не совсем понравилось, потому что для доступа к сгенерированному изображению мне нужно быть в Интернете.
Я сделал небольшое исследование comand-line и узнал, что 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 установили бы его под капотом без вашего ведома.