Generar imágenes QR con PHP usando qrlib.php

   
   Vamos a generar imágenes QR en PHP de una manera sencilla utilizando qrlib.php. Lo haremos de una manera muy fácil, usando la función QRcode::png.

   Lo primero, como siempre, es descargarnos la librería en este ENLACE. Una vez descargada, la descomprimimos y la añadimos a nuestro proyecto.


 En el código php tenemos que incluir la ruta al fichero qrlib.php que está en la carpeta que hemos añadido. El código más básico para generar una imagen qr, teniendo como datos una url, es el siguiente:

include_once dirname(__FILE__)."/phpqrcode/qrlib.php";

// --- url
$url = "https://es.wikipedia.org";

QRcode::png($url);

   A la función png le podemos pasar ciertos parámetros para cambiar la imagen del qr. Le podemos pasar una ruta para guardar la imagen, el tamaño de la imagen (ECC Level), los pixeles y el tamaño del frame. Los distintos valores para el tamaño de la imagen son los siguientes:

  • QR_ECLEVEL_L
  • QR_ECLEVEL_M
  • QR_ECLEVEL_Q
  • QR_ECLEVEL_H

   El L es el más pequeño y el H es el más grande. Jugando con estos niveles y los pixeles podemos obtener la imagen más grande o más pequeña y con más resolución o menos.

   Estos parámetros lo vemos con el siguiente código

include_once dirname(__FILE__)."/phpqrcode/qrlib.php";

// --- url
$url = "https://es.wikipedia.org";

QRcode::png($url,"temp/01.png",QR_ECLEVEL_L,3,1);
echo '<img src="temp/01.png"/>';

   El 3 corresponde a los pixels y el 1 al frame (el frame es como un margen blanco en la imagen en todos los lados). En tmp se guarda la imagen:

   Os voy a poner como se escribirian los datos para mandar un teléfono, sms, skype o email (la variable es $codigo, en los comentarios están las distintas formas del código para mandar teléfono, skype, etc):

include_once dirname(__FILE__)."/phpqrcode/qrlib.php";
// --- sms y telefono
//$codigo = "sms:568999666";
//$codigo = "tel:568999666";

// -- email
$email="sandritascs@gmail.com";
$subject="Test qr";
$body = "Comprobación del test qr";
$codigo="mailto:".$email."?subject=".urlencode($subject)."&body=".urlencode($body);

// --- skype
//$codigo = "skype:".urlencode("usuarioSkype")."?call";

// --- generar imagen
QRcode::png($codigo,"temp/01.png",QR_ECLEVEL_L,3,1);

echo '<img src="temp/01.png"/>';
 
En el video se puede ver una demostración del funcionamiento. Aquí teneis los ficheros del ejemplo del video junto con la librería --> DESCARGA