web-dev-qa-db-fra.com

Générer dynamiquement un code QR avec PHP

J'essaie de générer des codes QR sur mon site Web. Tout ce qu'ils ont à faire est d’avoir une URL, qu’une variable de mon site fournira. Quel serait le moyen le plus facile de faire cela?

88
AKor

Il est intéressant d’ajouter qu’en plus de la bibliothèque de codes QR publiée par @ abaumg , Google fournit une API Codes QR API Codes QRmerci beaucoup à @ Toukakoukan pour le mise à jour du lien.

Pour utiliser ceci, fondamentalement:

https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
  • 300x300 est la taille de l'image QR que vous souhaitez générer,
  • le chl est la chaîne codée par l'URL que vous voulez changer en code QR, et
  • le choe est le codage (facultatif).

Le lien ci-dessus donne plus de détails, mais pour l'utiliser, il suffit que le src d'une image pointe sur la valeur manipulée, comme suit:

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

Démo:

164
anon

Le moyen le plus simple de générer des codes QR avec PHP est le bibliothèque phpqrcode .

81
abaumg

La bibliothèque de phpqrcode est très rapide à configurer et la documentation de l'API est facile à comprendre.

En plus de la réponse de abaumg , j'ai joint 2 exemples dans PHP de http://phpqrcode.sourceforge.net/examples /index.php

1. Codeur de code QR

d'abord inclure la bibliothèque de votre chemin local

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

puis pour sortir l'image directement en tant que flux PNG, faites par exemple:

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

pour enregistrer le résultat localement sous forme d'image 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. Décodeur de code QR

Voir aussi le décodeur zxing :

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

Très utile pour vérifier le résultat.

3. Liste de format de données

Une liste de format de données que vous pouvez utiliser dans votre code QR en fonction du type de données:

  • URL du site Web: http://stackoverflow.com (y compris le protocole http://)
  • adresse e-mail: mailto: [email protected]
  • Numéro de téléphone: +16365553344 (y compris l'indicatif de pays)
  • Message SMS: smsto: numéro: message
  • Message MMS: mms: numéro: sujet
  • Vidéo YouTube: youtube: // ID (peut fonctionner sur iPhone, non normalisé)
20
RafaSashi

La bibliothèque endroid/QrCode est facile à utiliser, bien entretenu et peut être installé à l’aide de composer. Il existe également un bundle à utiliser directement avec Symfony.

Installation:

$ composer require endroid/qrcode

Utilisation:

<?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 sur Github. Le script le plus simple et fonctionne comme un charme.

Avantages:

  • Aucune dépendance vis-à-vis de tiers
  • Aucune limite pour le nombre de générations de codes QR
9
praba230890

J'utilise google qrcode api depuis un moment, mais je n'aimais pas trop cela, car cela nécessite que je sois sur Internet pour accéder à l'image générée.

J'ai fait une petite recherche en ligne de commande et découvert que linux dispose d'un outil de ligne de commande qrencode pour générer des codes-ressources.

J'ai écrit ce petit script. Et la bonne partie est que l’image générée a une taille inférieure à 1 Ko. Eh bien, les données fournies sont simplement une 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);

Ensuite, dans le code HTML, je charge l'image:

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

Vous devez juste l'avoir installé. [la plupart des applications d'imagerie sur linux l'auraient installé sous le capot sans que vous vous en rendiez compte.

4
Peter

Je sais que la question est de savoir comment générer des codes QR à l’aide de PHP, mais pour d’autres qui recherchent un moyen de générer des codes pour des sites Web le faisant en javascript pur, c’est un bon moyen de le faire. Le plugin jquery-qrcode jquery le fait bien.

4
Quinn Comendant