Динамическое создание QR-кода с помощью PHP

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

Ответ 1

Стоит добавить, что помимо библиотеки 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" />

Демо:

chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8

Ответ 3

Библиотека 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 веб-сайта: /fooobar.com/... (включая протокол http://)
  • адрес электронной почты: mailto: [email protected]
  • Номер телефона: +16365553344 (включая код страны)
  • СМС сообщение: смсто: номер: сообщение
  • MMS-сообщение: ммс: номер: тема
  • Видео YouTube: youtube://ID (может работать на iPhone, не стандартизировано)

Ответ 4

Библиотека endroid/QrCode проста в использовании, в хорошем состоянии и может быть установлена с помощью composer. Существует также пакет для использования непосредственно с 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()));

The generated QRCode

Ответ 5

qrcode-генератор на Github. Самый простой скрипт и работает как шарм.

Плюсы:

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

Ответ 6

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

Ответ 7

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

Я немного поработал и выяснил, что linux имеет инструмент командной строки qrencode для генерации qr-кодов.

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