Generar códigos QR con PHP

Los códigos QR, ( en inglés QR Code) son un tipo de códigos de barras bidimensionales. A diferencia de un código de barras convencional ( por ejemplo EAN-13, Código 3 de 9, UPC), la información está codificada dentro de un cuadrado, permitiendo almacenar gran cantidad de información alfanumérica.

Los códigos QR son fácilmente identificables por su forma cuadrada y por los tres cuadros ubicados en las esquinas superiores e inferior izquierda.

qr

Aunque el desarrollo inicial de los Códigos QR tenía como objetivo principal su utilización en la industria de la automoción, hoy por hoy la posibiidad de leer cógigos QR desde teléfonos y dispositivos móviles permite el uso de Qr Codes en un sinfín de aplicaciones completamente diferentes de las que originales como pueden ser:

  • Publicidad
  • Campañas de marketing
  • Merchandising
  • Diseño Gráfico
  • Papelería corporativa ( tarjetas de visita, catálogos)
  • Internet, Webs, blogs

Existen diversos generadores de códigos QR por la Web pero si quieres llegar más a fondo en el asunto, en este artículo vamos a ver como generar códigos QR desde código con PHP.

Lo primero que tendremos que hacer es descargar la librería de http://phpqrcode.sourceforge.net/

Descomprimir el paquete y subirlo al destino deseado del servidor. Ahora podremos crear un archivo PHP como por ejemplo en siguiente:

<?php
//set it to writable location, a place for temp generated PNG files
$PNG_TEMP_DIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'temp'.DIRECTORY_SEPARATOR;

//html PNG location prefix
$PNG_WEB_DIR = 'temp/';

include "qrlib.php";    

//ofcourse we need rights to create temp dir
if (!file_exists($PNG_TEMP_DIR))
    mkdir($PNG_TEMP_DIR);

$filename = $PNG_TEMP_DIR.'test.png';

$matrixPointSize = 10;
$errorCorrectionLevel = 'L';

$filename = $PNG_TEMP_DIR.'test'.md5($_REQUEST['data'].'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';
QRcode::png('información', $filename, $errorCorrectionLevel, $matrixPointSize, 2); 

echo '<img src="'.$PNG_WEB_DIR.basename($filename).'" /><hr/>';  
?>

Donde tan solo estamos mostrando la imagen que representa el código QR con el valor «Información».

Podemos leer desde cualquier dispositivo móvil con una aplicación lectera de códigos QR como por ejemplo BIDI el contenido de nuestro ejemplo en funcionamiento.

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(14 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

29 respuestas a “Generar códigos QR con PHP”

  1. Emilio dice:

    Disculpa en el sitio de Source Forge de ésta librería viene un formulario al final del sitio, donde puedes generar un QR a partir de una campo de texto, pero el QR que me genera lo leo con el celular y no arroja resultados, mientras que el QR que pones aquí al inicio del articulo, ese si me arroja la palabra información, la pregunta es, ¿generaste el QR del articulo con la librería? si es así, ¿por que algunos QR no son leídos?

    • Jose Aguilar dice:

      Hola, algunos códigos qr no son leídos porque se han generado mal o con alguna librería antigua. También es posible que la librería qrlib.php hay recibido cambios importantes y este código ya no funcione con la nueva librería.

  2. Carlos Ustariz dice:

    Excelente codigo!!!

  3. jairo alberto ruiz dice:

    jose bn dias.
    quiero generar un qr con el contenido desde un archivo plano
    pero que el resultado generado lo guarde sin nesecidad de visualizarlo para poderse usar mas adelante.
    que herramienta me recomienda ojala sea «FREE»

  4. Gustavo dice:

    Muchs gracias! Me fue muy útil

  5. Paholo dice:

    Hola un gran favor, como hago para grabar el codigo QR al mysql.

    Agradezco tu respuesta.

  6. Raul Ortiz dice:

    Jose buenas tardes, el codigo funciona perfecto. Excelente aporte. Me puedes colaborar como se guardaria la imagen en el mismo script. Gracias

  7. Fonsov dice:

    Implementé esa clase en mi script pero siempre me sale el mismo código qr

    • Alex dice:

      Es porque tiene el valor ‘informacion’ en el código, modificala a lo que necesites y el código cambiará:
      QRcode::png(‘información’, $filename, $errorCorrectionLevel,…
      Checalo y espero que te sirva

  8. Nicolas dice:

    Hola Jose, sabes como recuperar los campos de un codigo QR (imagen) y guardarlo en una Base de Datos.
    Muchas gracias.

  9. JOSE PINETE dice:

    Muy buen código, ya lo estoy implementando para que tenga el código la misma información de mi sello digital.

    Un consejo a los que quieren usar estos códigos, si no son programadores consigan uno, aunque algunos cambios pueden ser difíciles, si no tienen experiencia no traten de hacerlo por su cuenta, esto con la finalidad de que quede bien implementado su código.

    • Ignacio Guillen dice:

      Muchas gracias por compartir el código, funciona perfectamente. Por otro lado, estoy completamente de acuerdo con Jose Pinete cuando expresa que se requiere experiencia y conocimientos para implementar adecuadamente este tipo de códigos; zapatero a tus zapatos. Una empresa dejaba que sus empleados que son del área de contabilidad reinstales sus equipos y por supuesto descarguen y se instalen los programas que quieran, hasta que se contagiaron con el Cryptolocker y perdieron toda su base de datos del sistema de contabilidad, además de muchos documentos personales. Por ello, es necesario tener los conocimientos de programación necesarios para que estos códigos funcionen de manera adecuada, y si uno desea hacerlo por su cuenta, por lo menos estudie fundamentos de programación y lo básico de lenguaje de programación PHP, que existen muchos tutoriales en internet.

  10. walter dice:

    una pregunta con respecto al qr si yo quiero agregarle mas dato al qr como aria por favor ? osea no un solo campo de texto sino mas campo de texo

  11. Miguel dice:

    Hola, como puedo agregar otros datos al formulario.
    Gracias.

    • Jose Aguilar dice:

      No acabo de entender. En este artículo no hay formulario

      • Miguel dice:

        Un saludo,
        Disculpa que no aclare mi pregunta. Quisiera saber si es posible que al igual que existe un campo de formulario DATA sabes como se pudiera hacer una especie de formulario que luego genere un qr con la informacion q lleve el formulario.

  12. antonio dice:

    Como puedo eliminar la linea que sale con la imagen qr

  13. henry dice:

    jejej gracias por toda tu ayuda

  14. fulamito2000 dice:

    como puedo poner el qr en un pdf

    • Angus Young Dev dice:

      bro solo llamas a la imagen png desde su lugar como ser
      $pdf->ezImage(‘img/qr_image.png’,1,»,113,’left’);
      tendria que llamar algo aci espero te funciona saludos!

  15. cristobal dice:

    a mi me funcionaban superbien pero cambiaron el servidor y dejo de funcionar, me comentan que el servidor anterior era de 32bits y el nuevo es de 64, tiene esto algo que ver, existe una version a 64 bits???

  16. Ismael Bautista dice:

    Buenas tardes,
    Alguien me podria ayudar por favor? el ejemplo funciona muy bien pero me gustaria cambiar la posicion de la visualizacion en la pantalla. En esta parte del codigo lo cambio (2)

    QRcode::png(‘información’, $filename, $errorCorrectionLevel, $matrixPointSize, 2);

    al parecer x = 2 y = 2
    quisiera poder enviar esos datos para poderlo ver el codigo.
    Muchas gracias

  17. Cristopher Estrada dice:

    Buenas tardes esta genial tu información pero tengo una pregunta sabras como almacenar información a una BD al scanear un qr por ejemplo nombre fecha y hora

    Agradeceria tu ayuda Saludos

  18. beto hernandez dice:

    oye me sale un error en la siguiente función
    Call to undefined function ImageCreate() in C:\wamp\www\phpqrcode\qrimage.php on line 74

    espero y me puedas ayudar sl2

    • Juan Diego Bartolo dice:

      Buenas Tardes.

      Ese error te sale porque no tienes bien la ruta de la libreria phpqrcode.

    • Guillermo dice:

      Verifica que esté habilitada la extensión GD en el servidor. Al habilitar esa extensión se añade la función imagecreate (y algunas otras)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.