phpqrcode - qr lib
Generación dinámica de un código QR con PHP (7)
Intento generar códigos QR en mi sitio web. Todo lo que tienen que hacer es tener una URL en ellos, que proporcionará una variable en mi sitio. ¿Cuál sería la forma más fácil de hacer esto?
He estado usando google qrcode api por algún tiempo, pero no me gustó porque me requiere estar en Internet para acceder a la imagen generada.
Hice una pequeña investigación de línea de comandos y descubrí que linux tiene una herramienta de línea de comandos qrencode
para generar códigos qr.
Escribí este pequeño guión. Y lo bueno es que la imagen generada tiene menos de 1 KB de tamaño. Bueno, los datos suministrados son simplemente una 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);
Luego en el html cargo la imagen:
<img class="emrQRCode" src="<?=$imgData ?>" />
Solo necesitas haberlo instalado. [la mayoría de las aplicaciones de imágenes en Linux lo habrían instalado debajo del capó sin que te dieras cuenta.
La biblioteca endroid / QrCode es fácil de usar, está bien mantenida y puede instalarse utilizando el compositor. También hay un bundle para usar directamente con Symfony.
Instalación:
$ composer require endroid/qrcode
Uso:
<?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()));
La biblioteca phpqrcode es muy rápida de configurar y la documentación API es fácil de entender.
Además de la respuesta de abaumg, adjunté 2 ejemplos en PHP
de http://phpqrcode.sourceforge.net/examples/index.php
1. Codificador de código QR
primero incluya la biblioteca de su ruta local
include(''../qrlib.php'');
luego para mostrar la imagen directamente como una secuencia PNG, por ejemplo:
QRcode::png(''your texte here...'');
para guardar el resultado localmente como una imagen 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. Decodificador de código QR
Ver también el decodificador zxing :
http://zxing.org/w/decode.jspx
Bastante útil para verificar la salida.
3. Lista de formato de datos
Una lista de formato de datos que puede usar en su código QR de acuerdo con el tipo de datos:
- URL del sitio web: http://.com (incluido el protocolo
http://
) - dirección de correo electrónico: mailto: [email protected]
- Número de teléfono: +16365553344 (incluido el código de país)
- Mensaje SMS: smsto: número: mensaje
- Mensaje MMS: mms: número: asunto
- Video de YouTube: youtube: // ID (puede funcionar en iPhone, no estandarizado)
más tipo de datos en http://blog.thenetimpact.com/2011/07/decoding-qr-codes-how-to-format-data-for-qr-code-generators/
La forma más fácil de generar códigos QR con PHP es la biblioteca phpqrcode .
Sé que la pregunta es cómo generar códigos QR usando PHP, pero para otros que están buscando una manera de generar códigos para sitios web haciendo esto en javascript puro es una buena manera de hacerlo. El plugin jquery-qrcode jquery lo hace bien.
Vale la pena agregar que, además de la biblioteca de códigos QR publicada por @abaumg , Google proporciona una Código QR API QR Codes API muchas gracias a @Toukakoukan por la actualización del enlace .
Para usar esto, básicamente:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
-
300x300
es el tamaño de la imagen QR que desea generar, - el
chl
es la cadena codificada en url que quiere cambiar a un código QR, y - el
choe
es la codificación (opcional).
El enlace, arriba, da más detalles, pero para usarlo simplemente haga que el src
de una imagen apunte al valor manipulado, así:
<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" />
Manifestación:
qrcode-generator en Github. La secuencia de comandos más simple y funciona como encanto.
Pros:
- Sin dependencia de terceros
- Sin limitaciones para el número de generaciones de código QR