Archivo del sitio

[PHP5] – Barco Project: Un proyecto sobre barcodes y QRCode

En el día de hoy (30. sep. 2009) nace Barco Project como una iniciativa de integrar bajo una misma API todo el proceso de generar y analizar (escanear) variados tipos de Codigos de Barra y Códigos 2D; esto integra la posibilidad de con una misma API, generar:

  • Code39 (Code 3 to 9)
  • EAN 128
  • UPC
  • UPCS (US Postal Code)
  • Codabar
  • UPCa
  • Code128
  • QRCode
  • ISBN

Además incluirá la posibilidad de “analizar” un PNG generado para “reconocer” el contenido de algunos códigos de barra arriba mencionados.

El proyecto se encuentra en fase de “alpha release” y actualmente solo ha sido “portado” el código para generar QRCode.

Qué es QRCode?:

Según la Wikipedia un QRCode es: “Un QRCode (Quick Response Barcode) es un sistema para almacenar información en una matriz de puntos o un código de barras bidimensional creado por la compañía japonesa Denso-Wave en 1994; se caracterizan por los tres cuadrados que se encuentran en las esquinas y que permiten detectar la posición del código al lector. La sigla “QR” se derivó de la frase inglesa “Quick Response” pues el creador aspiraba a que el código permitiera que su contenido se leyera a alta velocidad. Los códigos QR son muy comunes en Japón y de hecho son el código bidimensional más popular en ese país.” (fuente: wikipedia).

Acá un ejemplo de código QR:

Y qué tiene de intersante QR?

QRcode es de muchisima popularidad en japón, esto es debido a que mientras el resto de los códigos de barra requieren la detección de “espacios y llenos” utilizando un láser; QRCode usa un patrón de cuadrados (dot-matrix) que representan los datos (en 2 dimensiones, ancho y alto) y los “cuadrados marca” sirven para que cualquier lectór óptico reconozca donde empieza y termina “el código” (entiendase por cualquier lector a cámaras digitales y otros dispositivos ópticos).

Además QR es un proyecto de “código abierto”; desarrollado por Densa-wave (una filial de Toyota) para el inventario de repuestos de vehículos; sin embargo, tras la liberación de patentes (royalty-free) hecha en 1999 y su correspondiente estandarización como norma ISO-IEC (ISO/IEC18004) en 2000 ha permitido a mucha gente desarrollar aplicaciones para QR.

Y como ha ganado tanta popularidad?

QR viene en patrones fijos de 1 a 40 cuadros, pudiendo albergar hasta 7000 carácteres, como es posible guardar tal cantidad de información y como es posible “escanearlo” con cualquier cámara óptica (además es completamente libre hacerlo), pues 2+2!, a mucha gente en Japón se les ocurrió “incorporar” lectores de QR en sus respectivos celulares, esto fue ganando popularidad hasta el punto que en japón la gente coloca su QR informativo en el reverso de las tarjetas de presentación y hasta la información de ubicación en las revistas viene en códigos QR (ahorras espacio de publicación).

Nokia tiene su aplicación “oficial” para QRCode y Datamatrix para todos sus dispositivos serie N (aunque funciona en mi Nokia 5800 XpressMusic) acá:

http://mobilecodes.nokia.com/

Acá hay alguien que habla de una aplicación para Blackberry para analizar QRcodes:

http://www.enriquedominguez.com/leyendo-qr-codes-desde-la-blackberry/

iMatrix es la aplicación “oficial” del Iphone para leer QRCodes:

http://www.qrcode.es/?p=244&language=es

Por lo que un QRCode generado ya casi cualquier persona (que tenga cámara digital en el celular + el software) lo puede leer.

Montandose en el barco de Barco Project

Barco Project surge como una iniciativa personal de integrar dentro de una única librería todo lo necesario para generar diversos tipos de barcodes; realmente todo surge como la posibilidad de cumplir con la ordenanza de la Providencia 939 del SENIAT (Organismo tributario Venezolano) que indica que para las facturas electrónicas impresas en formas libres; se sugiere agregar el código de barra para identificar la factura y algún medio electrónico de identificación automatizado del cliente (nombre, RIF: Registro de Información Fiscal).

Para ambas cosas, que mejor que combinar Code39 (factura), UPC (Inventario) y QRCode (identificación)?.

En mi investigación, determiné que el único script “viable” para QRCode en PHP que existía estaba en Japones y solamente funcionaba en CGI (es una pagina web que te pide todos los parámetros como URL encode data); esto dista mucho de la practicidad de contar con un objeto parametrizable que permita a distintas aplicaciones generar códigos QR.

Barco::QR

Con Barco::QR un programador de aplicaciones puede generar códigos QR con la simplicidad de un código PHP; veamos un ejemplo:

Primero, inicializamos la librería barco:

require 'barco/barco.inc.php';
#Inicializamos Barco:
barco::init();

Esta línea, me permite solicitar un generador de códigos QR (Quick Response):

$qr = barco::generate('qr');

La gran mayoría de los parámetros vienen por defecto, el único valor obligatorio es los datos que debemos agregar:

#defino la data y el modo de correccion ECC;
$qr->data('Esta es una prueba de Encoding usando QRcode')->ecc('M')->size('10');

ECC es el módo de corrección de errores, QR cuenta con 4 modos (‘M’, Q, L y H) (esto es opcional: por defecto siempre es M).

El Tamaño (size) define las dimensiones máximas del QR, desde 1 (max: 35 caracteres) hasta 40 (max: 7000).

Nota: intentar crear un QR más pequeño que la cantidad de datos genera error, aunque espero “mejorar” ese comportamiento al tratar de determinar el tamaño óptimo para la longitud de los datos requeridos.

Ahora, simplemente generamos el código QR:

if($qr->generate()) {
 $qr->image('png');
}

QR puede emitir el código como un RAW de bytes de imagen (útil para almacenar en una DB) o en forma de una imágen para salida por navegador, también pueden almacenarlo con un nombre a un archivo, escogiendo claro está, si lo desean jpeg o png.

El código generado por este ejemplo es:

Esta es una prueba de Encoding usando QRcode

Esta es una prueba de Encoding usando QRcode (10x10)

Como indiqué el proyecto se encuentra en fase “pre-alpha” y ya genera códigos QR (a diferentes dimensiones), próximamente incorporaré Code39, UPC y DataMatrix como principales algorítmos de códigos de barra.

Tambien incorporaré un lector-analizador (usando imagemagick) de códigos de barra para que puedan “probar” los códigos generados en ausencia de un scanner.

Los Códigos QR generados por el proyecto han sido probados con mobilecodes de Nokia y con QuickMark para HTC (espero más gente los pruebe).

Esperen más noticias de este proyecto!.

Nota: próximamente incorporaré un servicio gratuito de generación de QRCodes para personas que solo deseen tener un QR y no tengan tiempo (o no sepan) programar; esperalo!.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 3.067 seguidores

A %d blogueros les gusta esto: