Criando QR Code com php
O QR code(Código de resposta rápida) pode ser encontrado hoje em diversos tipos de produtos, posters/banners, sites, cartões de visita, etc. Basicamente ele é um código de barras bidimensional que pode armazenar diversos tipos de informações e podem ser lidos por diversos dispositivos com câmera como celulares e tablets, basta estes terem o aplicativo especifico.
O QR code é composto de vários pixels, sendo alguns com informações sobre o QR Code como versão, informações de alinhamento e tipo dos dados e informações de correção de erro e pode ir de 21×21 até 117×177 dependendo da versão.
Vamos então a exemplos, primeiramente baixe a biblioteca PHPQRcode, descompacte na pasta e inclua a biblioteca(qrlib.php) em seu código.
include('phpqrcode/qrlib.php');
QRcode::png("Olá Visitante!!!");
O exemplo acima irá gerar uma imagem PNG no stream, ou seja o PHP vai gerar um arquivo de imagem e imediatamente enviar para o navegador. Para colocar ele dentro uma página HTML devemos inserir o endereço do script php no src
de uma tag img
como abaixo:
<img src="exemplo1.php">
Caso quisermos salvar este QR code como um arquivo de imagem PNG, basta passar o caminho absoluto onde será salvo o arquivo como sergundo parâmetro, lembrando que a pasta onde este arquivo será gravado deve ter permissão de escrita.
<?php
include('phpqrcode/qrlib.php');
QRcode::png("http://www.botecodigital.info", "QR_code.png");
?>
<img src="QR_code.png">
Se você ler o QR code com um aplicativo como Barcode Scanner verá que o aplicativo consegui identificar que o conteúdo do QR code é uma URI e sugere a opção de abrir no navegador, podemos gerar QR code com outros tipos de informações, como:
Telefone
QRcode::png("tel:(55) 1234-4321");
include('phpqrcode/qrlib.php');
$email = "contato@botecodigital.info";
$assunto = "Mensagem de Teste";
$corpo = "Um simples e-mail de teste! :)";
QRcode::png("mailto:" .$email."?subject=".$assunto."&body=".$corpo );
Cartão de Visita
$nome = 'Rodrigo';
$fonetrabalho = '(55)1234-4321';
$fonecasa = '(55) 2312-5678';
$cel = '(55) 9999-9999';
$email = 'contato@botecodigital.info';
$cartao = 'BEGIN:VCARD'."\n";
$cartao .= 'FN:'.$nome."\n";
$cartao .= 'TEL;WORK;VOICE:'.$fonetrabalho."\n";
$cartao .= 'TEL;HOME;VOICE:'.$fonecasa."\n";
$cartao .= 'TEL;TYPE=cell:'.$cel."\n";
$cartao .= 'EMAIL:'.$email."\n";
$cartao .= 'END:VCARD';
QRcode::png( $cartao );
skype
$skypeUserName = 'rodrigoaramburu';
$content = 'skype:'.urlencode($skypeUserName).'?call';
QRcode::png( $content );
Correção de Erro
Como o QR code foi desenvolvido para ser colocado em etiquetas, estas podem ser danificadas perdendo parte de sua informação, devido a isso ele conta com informação redundante que pode ter vários níveis, sendo que quando maior a informação redundante menos de informação útil podemos colocar no QR code.
- Nível L: conta com 7% de poder de correção;
- Nível M: conta com 15% de poder de correção;
- Nível Q: conta com 25% de poder de correção;
- Nível H: conta com 30% de poder de correção.
Podemos configurar o nível de correção através do terceiro parâmetro.
$codeContents = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Proin nibh augue, suscipit a';
QRcode::png($codeContents, 'level_L.png', QR_ECLEVEL_L);
QRcode::png($codeContents, 'level_M.png', QR_ECLEVEL_M);
QRcode::png($codeContents, 'level_Q.png', QR_ECLEVEL_Q);
QRcode::png($codeContents, 'level_H.png', QR_ECLEVEL_H);
echo '<img src="level_L.png" />';
echo '<img src="level_M.png" />';
echo '<img src="level_Q.png" />';
echo '<img src="level_H.png" />';
Tamanho da imagem gerada
Como pode-se colocar um QR code desde placa mãe até em um outdoor, devemos poder gerar a imagem de tamanho diferente através do quarto parâmetro .
include('phpqrcode/qrlib.php');
$codeContents = 'http://www.botecodigital.info';
QRcode::png($codeContents, 'tamanho1.png', QR_ECLEVEL_L , 1);
QRcode::png($codeContents, 'tamanho2.png', QR_ECLEVEL_L , 2);
QRcode::png($codeContents, 'tamanho3.png', QR_ECLEVEL_L , 3);
QRcode::png($codeContents, 'tamanho4.png', QR_ECLEVEL_L , 4);
echo '<img src="tamanho1.png" />';
echo '<img src="tamanho2.png" />';
echo '<img src="tamanho3.png" />';
echo '<img src="tamanho4.png" />';
Se você não quer criar um código para gerar um único código QR você pode acessar nosso gerador de QR Code