Динамически генерирует QR-код с PHP

Я пытаюсь генерировать 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-коде в соответствии с типом данных:

  • URL веб-сайта: http://stackoverflow.com (включая protocole http:// )
  • адрес электронной почты: mailto: name@example.com
  • Телефон: +16365553344 (включая код страны)
  • SMS Сообщение: smsto: number: message
  • MMS Сообщение: mms: number: subject
  • YouTube Video: youtube: // ID (может работать на iPhone, а не стандартизован)

больше данных на http://blog.thenetimpact.com/2011/07/decoding-qr-codes-how-to-format-data-for-qr-code-generators/

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

Плюсы:

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

Библиотека 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())); 

Сгенерированный QRCode

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