Я пытаюсь генерировать QR-коды на моем сайте. Все, что им нужно сделать, это иметь в них URL-адрес, который предоставит переменная на моем сайте. Каким будет самый простой способ сделать это?
Стоит добавить, что в дополнение к библиотеке QR-кодов, опубликованной @abaumg , Google предоставляет API QR-кодов API QR-кодов много благодаря @Toukakoukan для обновления ссылок .
Чтобы использовать это, в основном:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
300x300
– это размер QR-изображения, которое вы хотите создать, chl
– строка, закодированная url, которую вы хотите изменить в QR-код, и 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-коде в соответствии с типом данных:
http://
) больше данных на http://blog.thenetimpact.com/2011/07/decoding-qr-codes-how-to-format-data-for-qr-code-generators/
qrcode-генератор на Github. Простой скрипт и работает как шарм.
Плюсы:
Библиотека endroid / QrCode проста в использовании, хорошо поддерживается и может быть установлена с использованием композитора. Существует также набор для непосредственного использования с 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-коды с помощью PHP, но для других, которые ищут способ генерировать коды для веб-сайтов, делающих это в чистом javascript, это хороший способ сделать это. Jquery-qrcode 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 установили бы его под капот, если вы не осознаете.