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.
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.
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?
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.
Excelente codigo!!!
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»
Hola,
Sobre los códigos QR solo podemos recomendarte lo que conocemos y está escrito en este tutorial.
Saludos
Muchs gracias! Me fue muy útil
Hola un gran favor, como hago para grabar el codigo QR al mysql.
Agradezco tu respuesta.
Hola, lo puedes guardar en un campo tipo TEXT donde puedes guardar código html con el objetivo de guardar el tag img con el códgio qr. Saludos
Jose buenas tardes, el codigo funciona perfecto. Excelente aporte. Me puedes colaborar como se guardaria la imagen en el mismo script. Gracias
Implementé esa clase en mi script pero siempre me sale el mismo código qr
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
Hola Jose, sabes como recuperar los campos de un codigo QR (imagen) y guardarlo en una Base de Datos.
Muchas gracias.
Hola buenas tardes,
Si, si todavía lo necesitas, envíanos un email a blog@jose-aguilar.com con todos los detalles de la petición para ver como podemos proceder.
Saludos
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.
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.
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
Hola, como puedo agregar otros datos al formulario.
Gracias.
No acabo de entender. En este artículo no hay formulario
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.
Como puedo eliminar la linea que sale con la imagen qr
jejej gracias por toda tu ayuda
como puedo poner el qr en un pdf
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!
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???
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
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
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
Buenas Tardes.
Ese error te sale porque no tienes bien la ruta de la libreria phpqrcode.
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)