it-swarm.com.de

Dynamisches Erzeugen eines QR-Codes mit PHP

Ich versuche, QR-Codes auf meiner Website zu generieren. Sie müssen lediglich eine URL in sich haben, die eine Variable auf meiner Website bereitstellt. Was wäre der einfachste Weg, dies zu tun?

88
AKor

Zusätzlich zu der von @ abaumg bereitgestellten QR-Code-Bibliothek bietet Google eine QR Codes API QR Codes APIvielen dank an @ Toukakoukan für das link update.

Grundsätzlich gilt:

https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
  • 300x300 ist die Größe des QR-Bildes, das Sie generieren möchten,
  • das chl ist die URL-codierte Zeichenfolge, die Sie in einen QR-Code ändern möchten
  • das choe ist die (optionale) Kodierung.

Der obige Link enthält mehr Details, aber um ihn zu verwenden, muss nur der src eines Bildpunkts auf den manipulierten Wert lauten:

<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" />

Demo:

164
anon

Der einfachste Weg, QR-Codes mit PHP zu generieren, ist die phpqrcode library .

81
abaumg

Die phpqrcode Bibliothek ist sehr schnell zu konfigurieren und die API Dokumentation ist leicht zu verstehen.

Zusätzlich zu Abaumgs Antwort habe ich 2 Beispiele in PHP von http://phpqrcode.sourceforge.net/ angehängt. examples/index.php

1. QR-Code-Encoder

schließen Sie zuerst die Bibliothek von Ihrem lokalen Pfad ein

include('../qrlib.php');

um das Bild dann direkt als PNG-Stream auszugeben, gehen Sie wie folgt vor:

QRcode::png('your texte here...');

so speichern Sie das Ergebnis lokal als PNG-Bild:

$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-Code-Decoder

Siehe auch den zxing Decoder:

http://zxing.org/w/decode.jspx

Ziemlich nützlich, um die Ausgabe zu überprüfen.

3. Liste der Datenformate

Eine Liste von Datenformaten, die Sie in Ihrem QR-Code entsprechend dem Datentyp verwenden können:

  • URL der Website: http://stackoverflow.com (einschließlich des Protokolls http://)
  • e-Mail-Adresse: mailto: [email protected]
  • Telefonnummer: +16365553344 (einschließlich Landesvorwahl)
  • SMS-Nachricht: smsto: number: message
  • MMS-Nachricht: mms: Nummer: Betreff
  • YouTube Video: youtube: // ID (funktioniert möglicherweise auf dem iPhone, nicht standardisiert)
20
RafaSashi

Die endroid/QrCode Bibliothek ist einfach zu benutzen, gut gepflegt und kann mit Composer installiert werden. Es gibt auch ein Bundle zur direkten Verwendung mit Symfony.

Installieren:

$ composer require endroid/qrcode

Verwendung :

<?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

13
Iwazaru

qrcode-generator auf Github. Einfachstes Skript und funktioniert wie Charme.

Vorteile:

  • Keine Abhängigkeit von Dritten
  • Keine Einschränkungen für die Anzahl der QR-Code-Generationen
9
praba230890

Ich benutze seit einiger Zeit Google QRCODE API, aber das hat mir nicht ganz gefallen, da ich im Internet sein muss, um auf das generierte Bild zugreifen zu können.

Ich habe ein wenig nach Kommandozeilen gesucht und herausgefunden, dass Linux ein Kommandozeilen-Tool qrencode zum Generieren von qr-Codes hat.

Ich habe dieses kleine Drehbuch geschrieben. Und das Gute daran ist, dass das generierte Bild weniger als 1 KB groß ist. Nun, die gelieferten Daten sind einfach eine 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);

Dann lade ich im HTML das Bild:

<img class="emrQRCode" src="<?=$imgData ?>" />

Sie müssen es nur installiert haben. [Die meisten Imaging-Apps unter Linux hätten es unter der Haube installiert, ohne dass Sie es bemerkt hätten.

4
Peter

Ich weiß, die Frage ist, wie man QR-Codes mit PHP generiert, aber für andere, die nach einer Möglichkeit suchen, Codes für Websites zu generieren, ist dies in reinem Javascript eine gute Möglichkeit. Das jquery-qrcode jquery-Plugin macht es gut.

4
Quinn Comendant