Gerar Códigos QRCode com Python

Neste artigo irei explicar o que são os códigos QR, ou QRCodes, junto com exemplos de códigos simples e Python para gerá-los com o módulo PyQRCode.

[ Hits: 10.382 ]

Por: Diego Mendes Rodrigues em 20/05/2021 | Blog: https://www.linkedin.com/in/diegomendesrodrigues/


Introdução



O Código QR (do inglês Quick Response, ou "resposta rápida" em português) é um código de barras que pode ser normalmente escaneado usando a os smartphones atuais equipados com câmera. Esse código quando escaneado é convertido em texto, como por exemplo um endereço URL, um número de telefone para comunicação via WhatsApp, uma localização georreferenciada com coordenadas geográficas, um e-mail, dentre outras opções.

Inicialmente, ele era empregado para catalogar peças na produção de veículos, hoje o QR Code costuma ser usado também no gerenciamento de inventário e controle de estoque em indústrias e comércio. Desde 2003, foram desenvolvidas aplicações que ajudam usuários a inserir dados em telefone celulares (smartphones) usando a câmera do aparelho.

Os códigos QR são comuns atualmente também em revistas e propagandas, para registrar endereços e URLs, bem como informações pessoais detalhadas. Em cartões de visita, por exemplo, o código QR facilita muito a inserção desses dados em agendas de telefones celulares.

Capacidade de armazenamento do QR Code

O código QR indica o tipo de conteúdo que foi armazenado, como por exemplo, se foi apenas um número, ou se foi armazenada uma frase. Para isso, o padrão do QR Code utilizado estabelece diferentes modos de entradas no armazenamento.

Possíveis caracteres conforme modo utilizado:
  • Somente numérico (3⅓ bits/char): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • Alfanumérico (5½ bits/char): 0-9, A-Z (maiúsculas apenas), espaço, $, %, *, +, -, ., /, :
  • Binário (8 bits/char): padrão ISO 8859-1
  • Kanji/kana (13 bits/char): padrão Shift JIS X 0208

Capacidade de armazenamento da versão 1, sendo uma imagem com 21×21 módulos:
  • Numérica - máx. 41 caracteres no nível L, 17 no nível H
  • Alfanumérica - máx. 25 caracteres no nível L (suficiente para URL curta), 10 no nível H
  • Binário (8 bits) - máx. 17 bytes no nível L, 7 no nível H

Capacidade máxima da versão 40 do nível L, sendo uma imagem com 177×177 módulos):
  • Numérica - máx. 7089 caracteres
  • Alfanumérica - máx. 4296 caracteres
  • Binário (8 bits) - máx. 2953 bytes
Linux: Gerar códigos QR Code com Python
Caso queira saber as capacidades de armazenamento em todos os níveis, segue o site para a consulta:

PyQRCode

O módulo PyQRCode é um gerador de códigos QR, fácil de ser utilizado, além de ser escrito em Python. O módulo automatiza a maior parte do processo de construção de QR Codes. Ao contrário de outros geradores existentes, todas as configurações podem ser controladas manualmente. Desta forma, o usuário final fica livre para definir todas as propriedades do seu código QR.

Os QR Codes podem ser salvos nos formatos SVG e PNG (usando o módulo pypng), além de texto simples. Além disso, eles também podem ser exibidos diretamente na maioria dos emuladores de terminal do Linux. O módulo PyQRCode busca seguir o padrão do QR Code da forma mais fiel possível. As principais configurações e as codificações usadas no PyQRCode vêm definidas por padrão.

Requisitos para a utilização

O módulo PyQRCode requer somente o Python 2.6, Python 2.7 ou Python 3. Você pode querer instalar o pypng para gerar arquivos PNG de seus QR Codes, mas essa instalação é opcional. Note que o pypng é apenas um gerador de PNG Python, que não requer outras bibliotecas.

Instalação

A instalação é simples, sendo realizada através do pip usando o seguinte com os comandos:

pip install PyQRCode
pip install pypng

Gerar códigos QR Codes

A utilização do módulo PyQRCode é muito simples. Nesse primeiro exemplo, iremos gerar um QR Code com a URL do site Viva o Linux.

import PyQRCode
import png

qrcode = PyQRCode.create("https://www.vivaolinux.com.br")

# Salvar o QR Code
qrcode.png("Viva_o_Linux_QRCode.png", scale=6)
 

O arquivo "Viva_o_Linux_QRCode.png" foi gerado:
Linux: Gerar códigos QR Code com Python

Podemos alterar a cor do QR Code, além da cor do pano de fundo do QR Code.

Para isso utilizamos as configurações:
  • module_color=(R, G, B, Transparência) :: Define a cor do traçado do QR Code; Os valores são de 0 até 255, sendo por exemplo, um QR Code vermelho definido como module_color=(255, 0, 0, 255).
  • background=(R, G, B, Transparência) :: Define a cor do pano de fundo do QR Code; Os valores são de 0 até 255, sendo por exemplo, um pano de fundo azul definido como background=(0, 0, 255, 255) .

No código abaixo, iremos gerar um QR Code com o traçado vermelho, além de outro, com o traçado vermelho e o fundo azul:

import PyQRCode
import png

qrcode = PyQRCode.create("https://www.vivaolinux.com.br")

# Salvar o QR Code com traçado vermelho
qrcode.png("Viva_o_Linux_QRCode_Vermelho.png", scale=6, module_color=(255, 0, 0, 255))

# Salvar o QR Code com traçado vermelho e fundo azul
qrcode.png("Viva_o_Linux_QRCode_Vermelho_Azul.png", scale=6, module_color=(255, 0, 0, 255), background=(0, 0, 255, 255))
 

Os arquivos "Viva_o_Linux_QRCode_Vermelho.png" e "Viva_o_Linux_QRCode_Vermelho_Azul.png" foram gerados:
Linux: Gerar códigos QR Code com Python

Linux: Gerar códigos QR Code com Python

Conclusão

Espero que esse artigo tenha ajudado os desenvolvedores com o conhecimento do QR Code, além de ter apresentado de uma forma simples como gerá-los.

Quem buscar mais informações, pode acessar o site oficial do QR Code e do módulo PyQRCode:
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Instalar o Microsoft SQL Server no Debian e no Ubuntu

Instalando Adicionais para Convidados para VirtualBox no Debian, Linux Mint e Ubuntu

Instalando MariaDB no Debian e Ubuntu

Truques úteis de linha de comando Linux para iniciantes

Interface de Rede Virtual no Debian

Leitura recomendada

Criando um leitor de RSS com Python

Interagindo com servidores HTTP com Python

Reconhecimento de placas de veículos com OpenALPR

Gerar senhas seguras com Python

Splash Screen para Inkscape

  
Comentários
[1] Comentário enviado por fabio em 20/05/2021 - 05:00h

Sou fã demais de Python!

[2] Comentário enviado por maurixnovatrento em 20/05/2021 - 11:46h


Bem legal essa dica.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[3] Comentário enviado por adrianoh2 em 27/05/2021 - 11:48h

Ótimo artigo! Python é muito bom. Estou procurando uma boa solução em python para Barcode. Sabe de algum?


Entrega o teu caminho ao Senhor; confia nele, e ele o fará. - Salmos 37:5
Tava bão, ocê veio, fico mió!

[4] Comentário enviado por Buckminster em 05/07/2021 - 16:01h

Interessante!

[5] Comentário enviado por calovi em 24/07/2021 - 23:15h

Um bom link aqui também com outro exemplo:
https://towardsdatascience.com/generate-qrcode-with-python-in-5-lines-42eda283f325

... mas nas cores onde diz:
img = qr.make_image(fill='black', back_color='white')

...usei:
img = qr.make_image(fill_color="black",back_color="white")


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts