Atualizado: 10/12/2024

Criando QR Code - Python

O QR Code (Quick Response Code) é uma forma amplamente utilizada de codificação de informações, representado como uma matriz de pixels em um padrão quadrado. Em Python, é possível criar QR Codes utilizando diversas bibliotecas, muitas delas com funcionalidades similares. Entre essas, destaca-se a biblioteca Segno, conhecida por sua simplicidade e eficiência.

Para instalar a biblioteca Segno, pode-se utilizar o gerenciador de pacotes pip:

pip install segno

A criação de QR Codes é realizada por meio das funções segno.make() e segno.make_qr(). Ambas recebem como argumento principal o conteúdo a ser codificado e retornam o QR Code gerado:

import segno

qrcode = segno.make_qr("Hello www.programicio.com!")
qrcode2 = segno.make("Hello www.programicio.com!", micro=False)

Por padrão, a função segno.make() gera um micro QR Code, uma versão otimizada para pequenos volumes de dados. Para criar um QR Code convencional, é necessário definir explicitamente o parâmetro micro=False.

Salvando o QR Code em Arquivos

O QR Code gerado pode ser salvo em diferentes formatos, como .svg, .png, .eps e .pdf, utilizando o método save():

import segno

# Criando o código
qrcode = segno.make_qr("Hello www.programicio.com!")

# Salvando o código em um arquivo PNG
qrcode.save("programicio_qr.png")

# Salvando o código em outros formatos
qrcode.save("programicio_qr.pdf")
qrcode.save("programicio_qr.eps")
qrcode.save("programicio_qr.svg")

Para exibir o QR Code diretamente no visualizador de imagens padrão do sistema, pode-se usar o método show():

import segno

qrcode = segno.make_qr("Hello www.programicio.com!")
qrcode.show()

Personalizando o QR Code

O método save() aceita vários parâmetros que permitem personalizar o QR Code gerado, incluindo:

  • scale: fator de escala da imagem.

  • border: tamanho da borda ao redor do código.

  • dark: cor das áreas escuras do QR Code, que pode ser definida como uma tupla RGB, um nome de cor (como "red") ou um valor hexadecimal (por exemplo, #RRGGBB).

  • light: cor das áreas claras do QR Code.

Exemplo de personalização:

import segno

qrcode = segno.make_qr("Hello www.programicio.com!")
# Configurando cor, borda e escala
qrcode.save("custom_qr.png", dark="#2980B9", border=4, scale=5)

Neste caso, o QR Code será gerado com uma borda de 4 unidades, ampliado em 5 vezes e com a cor escura configurada como azul (#2980B9).

QR Code gerado com a biblioteca Segno

Funções Auxiliares

A biblioteca Segno também oferece funções auxiliares para criar QR Codes adaptados a diferentes tipos de dados, como emails, coordenadas geográficas, redes Wi-Fi e informações de contato. Essas funções simplificam a codificação de dados estruturados, reduzindo a necessidade de manipulação manual.

Codificação de Email

A função segno.helpers.make_email() gera QR Codes contendo informações de email. É possível definir o destinatário, assunto, corpo do email e listas de cópia (CC e BCC):

from segno import helpers

qrcode = helpers.make_email(
    "tom@gmail.com", 
    subject="Assunto do Email", 
    body="Conteúdo do Email"
)
qrcode.save("email_qr.png", scale=5)

Codificação de Coordenadas Geográficas

A função segno.helpers.make_geo() permite codificar coordenadas geográficas (latitude e longitude) em QR Codes:

from segno import helpers

qrcode = helpers.make_geo(lat=40.7128, lng=-74.0060)
qrcode.save("geo_qr.png", scale=5)

Codificação de Redes Wi-Fi

Com a função segno.helpers.make_wifi(), é possível criar QR Codes contendo informações de configuração de redes Wi-Fi, como SSID, senha e tipo de autenticação:

from segno import helpers

qrcode = helpers.make_wifi(
    ssid="MyWifi", 
    password="1234567890", 
    security="WPA"
)
qrcode.save("wifi_access.png", scale=10)

Codificação de Contatos

A biblioteca Segno suporta a criação de QR Codes para informações de contato em formatos como MeCard e vCard. Por exemplo, para gerar um QR Code no formato vCard:

from segno import helpers

qrcode = helpers.make_vcard(
    name="John Doe", 
    displayname="John",
    email="john.doe@example.com", 
    phone="+123456789"
)
qrcode.save("vcard_qr.png", scale=5)
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com