Pular para o conteúdo

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.
Diego Mendes Rodrigues diegomrodrigues
Hits: 12.744 Categoria: Python Subcategoria: Outros
  • Indicar
  • Impressora
  • Denunciar

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:
   1. Introdução

Fail2ban no Debian - Instalação e Configuração

Instalar o Gitea no Ubuntu

Storj - Armazenamento na Nuvem utilizando a tecnologia Blockchain

Raspberry Pi 4B Como Servidor Linux de Baixo Custo

Alternativas ao Microsoft Visio para Linux

Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante

rwd - Restart When Down

paramiko - Python + SSH

Como isolar seus projetos Python com virtualenv (ambiente virtual)

Port Scanner com Python

#1 Comentário enviado por fabio em 20/05/2021 - 05:00h
Sou fã demais de Python!
#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!

Contribuir com comentário

Entre na sua conta para comentar.