Início > Artigos > QrCode código de barras bi-dimensional

QrCode código de barras bi-dimensional

Neste artigo iremos aprender como criar código de barras 2d QRCode

O QR Code é uma tecnologia que poucas pessoas no Brasil conhecem, é um código de barras 2D que está sendo cada vez mais utilizado em anúncios publicitários, videoclipes e uma série de outras situações.

Ficou curioso para saber como funciona? Então confira este artigo.

Trata-se de um código de barras 2D capaz de armazenar até 4.296 caracteres alfanuméricos de texto.

Códigos QR pode ser lido por um dispositivo que vão desde leitores de código QR e para qualquer celular que permite ao usuário apontar a câmera para uma figura.

O mais legal é que você mesmo pode criar um QR Code !

Então vamos nessa, crie um novo projeto Delphi Vcl e iremos adicionar um TImage, TMemo, TButton, 2 TMaskEdit, TComboBox e 3 TLabel, , abaixo temos o layout do formulário.

Figura 1. Layout do Formulário

Mudando as propriedades dos componentes no projeto .

Image1 Height e Width mude para 321

Memo1 Lines mude para digite aqui sua mensagem

EditMask1 EditMask mude para !999;1;

EditMask2 EditMask mude para !999;1;

EditMask1 Text mude para 300

EditMask2 Text mude para 300

ComboBox1 Text mude para L – [padrão] Permite a recuperação de até 7% de perda de dados

ComboBox1 Items mude para L – [padrão] Permite a recuperação de até 7% de perda de dados

M – Permite a recuperação de até 15% de perda de dados

Q – Permite a recuperação de até 25% de perda de dados

H – Permite a recuperação de até 30% a perda de dados

ComboBox1 Style mude para csDropDownList

ComboBox1 ItemIndex mude para 0

Button1 Caption mude para Gerar Etiqueta

Codificando o projeto, incluir 3 classes no uses PngImage, HTTPApp, WinInet, procedure WinInet_HttpGet, procedure GetQrCode, constante UrlGoogleQrCode e uma variável enumerada na sessão Type com o nome TQrImage_ErrCorrLevel.

Observação. variável enumerada é um tipo de variável pré-definida criada na sessão Type Exemplo:

Type

TDiaSemana = (segunda, terça-feira, domingo);

Assim que definir um tipo de dados enumerado, podemos declarar variáveis para ser desse tipo:

var algumdia: TDiaSemana;

O objetivo principal de um tipo de dados enumerado é deixar claro quais dados o programa irá manipular. Um tipo enumerado é realmente apenas uma maneira abreviada de atribuição de valores seqüenciais a constantes. Dadas estas declarações, terça-feira é uma constante do tipo TDiaSemana .

1.Ficando assim nosso código até o momento!

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.ExtCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Memo1: TMemo;
Button1: TButton;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses
PngImage,
HTTPApp,
WinInet;

{$R *.dfm}

type
TQrImage_ErrCorrLevel = (L, M, Q, H);

const
UrlGoogleQrCode =
'http://chart.apis.google.com/chart?chs=%dx%d&cht=qr&chld=%s&chl=%s';
QrImgCorrStr: array [TQrImage_ErrCorrLevel] of string = ('L', 'M', 'Q', 'H');

procedure WinInet_HttpGet(const Url: string; Stream: TStream);
const
BuffSize = 1024 * 1024;
var
hInter: HINTERNET;
UrlHandle: HINTERNET;
BytesRead: DWORD;
Buffer: Pointer;
begin
hInter := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hInter) then
begin
Stream.Seek(0, 0);
GetMem(Buffer, BuffSize);
try
UrlHandle := InternetOpenUrl(hInter, PChar(Url), nil, 0,
INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
begin
repeat
InternetReadFile(UrlHandle, Buffer, BuffSize, BytesRead);
if BytesRead > 0 then
Stream.WriteBuffer(Buffer^, BytesRead);
until BytesRead = 0;
InternetCloseHandle(UrlHandle);
end;
finally
FreeMem(Buffer);
end;
InternetCloseHandle(hInter);
end
end;

procedure GetQrCode(Width, Height: Word;
Correction_Level: TQrImage_ErrCorrLevel; const Data: string;
StreamImage: TMemoryStream);
Var
EncodedURL: string;
begin
EncodedURL := Format(UrlGoogleQrCode,
[Width, Height, QrImgCorrStr[Correction_Level], HTTPEncode(Data)]);
WinInet_HttpGet(EncodedURL, StreamImage);
end;

end.

2. No Evento OnClick do Button1 implemente o código abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var
ImageStream: TMemoryStream;
PngImage: TPngImage;
begin
Image1.Picture := nil;
ImageStream := TMemoryStream.Create;
PngImage := TPngImage.Create;
try
try
GetQrCode(StrToInt(Trim(MaskEdit1.Text)), StrToInt(Trim(MaskEdit2.Text)),
TQrImage_ErrCorrLevel(ComboBox1.ItemIndex), Memo1.Lines.Text,
ImageStream);
if ImageStream.Size > 0 then
begin
ImageStream.Position := 0;
PngImage.LoadFromStream(ImageStream);
Image1.Picture.Assign(PngImage);
end;
except
on E: exception do
ShowMessage(E.Message);
end;
finally
ImageStream.Free;
PngImage.Free;
end;

3. No Evento OnCreate do Form1 implemente o código abaixo:

 Button1Click(Sender);

Neste momento se você executar o projeto vai ter o seguinte resultado:

Considerações finais:

Podendo criar uma rotina para impressão da etiqueta.
Para decifrar o códigos é necessário de um aplicativo instalado em seu celular segue o site do aplicativo:
http://i-nigma.com/i-nigmahp.html

Vamos ver imagens e vidêos como são usados o QRCode.

Programa de TV francês: caça ao tesouro com QR Code .
http://www.youtube.com/watch?v=zn4mIKMH7S4

Veja onde usam o QRCode.
http://www.qrstuff.com/qr_code_examples.html

Qrcode em camisetas.
http://www.messa.com.br/eric/ecode/uploaded_images/qr_tshirt01-715400.jpg

Espero que tenham gostado
Um grande abraço a todos!

Código Fonte clique aqui

Anúncios
Categorias:Artigos Tags:,
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: