Génération dynamique d'un code QR avec PHP [fermé]
j'essaie de générer des codes QR sur mon site. Tout ce qu'ils ont à faire est d'avoir une URL qui une variable sur mon site. Quelle serait la meilleure façon de le faire?
7 réponses
il est intéressant d'ajouter que, en plus de la bibliothèque de codes QR affichés par @abaumg , Google fournit un codes QR API codes QR API de nombreux remerciements à @Toukakoukan pour le Link Update .
pour utiliser ceci, fondamentalement:
/images/content/5943368/b2749f90cdaaf7826fb62f0546be326e.com
-
300x300
est la taille de L'image QR que vous voulez générer, - le
chl
est la chaîne encodé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 d'avoir le src
d'une image pointer vers la valeur manipulée, comme ceci:
<img src="/images/content/5943368/b2749f90cdaaf7826fb62f0546be326e.com" title="Link to Google.com" />
Démo:
la bibliothèque phpqrcode est vraiment rapide à configurer et la documentation de L'API est facile à comprendre.
en plus de la réponse d'abaumg j'ai joint 2 exemples dans PHP
de http://phpqrcode.sourceforge.net/examples/index.php
1. Code QR encoder
incluez d'abord la bibliothèque de votre chemin local
include('../qrlib.php');
puis de sortir l'image directement comme PNG stream le font par exemple:
QRcode::png('your texte here...');
pour sauvegarder 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. Code QR décodeur
Voir Aussi Le zxing decoder:
http://zxing.org/w/decode.jspx
assez utile pour vérifier le sortie.
3. Liste des formats de données
une liste de format de données que vous pouvez utiliser dans votre code QR selon le type de données :
- URL du site web: http://stackoverflow.com (y compris le protocole
http://
) - courriel: mailto:name@example.com
- numéro de téléphone: +16365553344 (y compris le code du pays))
- SMS: smsto: numéro: message
- Message MMS: mms:numéro:objet
- YouTube de la Vidéo: youtube://ID (peut fonctionner sur l'iPhone, pas normalisée)
type de données supplémentaires sur http://blog.thenetimpact.com/2011/07/decoding-qr-codes-how-to-format-data-for-qr-code-generators /
la bibliothèque endroid/QrCode est facile à utiliser, bien entretenue, et peut être installée en utilisant composer. Il y a aussi 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()));
qrcode-générateur sur Github. Script le plus simple et fonctionne comme le charme.
Pour:
- pas de dépendance de tiers
- pas de limitation du nombre de codes QR générations
je sais que la question Est de savoir comment générer des codes QR en utilisant PHP, mais pour d'autres qui sont à la recherche d'un moyen de générer des codes pour les sites Web faisant cela en javascript pur est une bonne façon de le faire. Le plugin jquery-qrcode jquery Le fait bien.
j'utilise l'api QRCode de google depuis quelque temps, mais je n'ai pas tout à fait aimé cela parce que cela me demande D'être sur Internet pour accéder à l'image générée.
j'ai fait une petite recherche comand-line et j'ai découvert que linux a un outil en ligne de commande qrencode
pour générer des qr-codes.
j'ai écrit ce petit script. Et la bonne partie est que l'image générée est moins de 1KB dans la taille. 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);
puis dans le html je charge l'image:
<img class="emrQRCode" src="<?=$imgData ?>" />
vous avez juste besoin de l'avoir installé. [la plupart des applications d'imagerie sous linux l'auraient installé sous le capot sans que vous vous en rendiez compte.