Динамическое создание QR-кода с помощью PHP [закрыто]


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

7 70

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.

The библиотека phpqrcode очень быстро настроить и документация API легко понять.

в дополнение к ответу абаумга Я приложил 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 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()));

The generated QRCode

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 установили бы его под капотом без вашего ведома.