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.004 ]

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

Ubuntu 18.04 LTS - LAMP - Linux, Apache, MySQL ou MariaDB, PHP 7.2

Instalar o Ubuntu Server

Firewall com o UFW

Bloqueio de usuários com o chroot

Adicionar mensagens iniciais no terminal nas sessões de sudo

Leitura recomendada

Port Scanner com Python

Pydev - Preparando o Eclipse para o Python

PEP 8 - Guia de estilo para código Python

Interagindo com servidores HTTP com Python

Robótica com Android e Arduino

  
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