Artigo original: How to Create Stunning QR Codes with Python

Um código de resposta rápida, ou quick response (QR), é um código de barras que um dispositivo digital pode escanear facilmente. Ele codifica os dados como uma série de pixels em uma grade quadrada.

Acompanhar informações sobre cadeias de suprimentos usando códigos QR é muito útil em campanhas de marketing e publicidade.

A International Organization for Standardization (ISO) certificou os códigos QR como um padrão global em 2000. Eles são uma melhoria em relação aos códigos de barras unidimensionais anteriores.

Os códigos QR foram desenvolvidos na década de 1990 para fornecer mais informações do que um código de barras comum. Eles foram criados pela Denso Wave, afiliada da Toyota, para monitorar a produção de veículos.

Ao contrário dos códigos de barras, que precisam de um feixe de luz para refletir as linhas paralelas, os códigos QR podem ser escaneados digitalmente por dispositivos como smartphones.

Os códigos QR são usados em sistemas de criptomoeda para permitir pagamentos digitais, como ao exibir um endereço Bitcoin. Os códigos QR também costumam ser usados para comunicar URLs de sites a dispositivos móveis.

Neste artigo, usaremos a biblioteca segno para criar belos códigos QR que executam muitas funções.

O que é o Segno?

O Segno é um gerador de código QR de código aberto que permite criar códigos QR regulares e micro com muito pouco esforço. Ele também não possui dependências.

O Segno oferece alguns tipos de serialização, como SVG, EPS, PNG, PDF e saída de texto. Nenhum desses serializadores chama uma biblioteca externa. Por meio de um design de plug-in, o Segno oferece outros tipos de serialização. PyPy e Python versões 2.6 a 3.4 foram usadas para teste.

Como instalar o Segno

Assim como qualquer outra biblioteca Python, você pode instalar o Segno via pip.

pip install segno

Como criar um código QR

Então, usando o método .make(), vamos começar fazendo o código QR mais básico possível. Como o conteúdo é tão pequeno, o Segno gera automaticamente um código "micro QR" de tamanho reduzido, que carrega dados brutos e que você pode copiar ou transferir.

import segno

price_tag = segno.make("Hello World")
price_tag.save("hello-world.png")

O código QR é gerado e salvo em nosso diretório de projetos.

Price-Tag
hello-world.png

Podemos adicionar uma borda ao código QR para torná-lo mais atraente. Você pode fazer isso adicionando o parâmetro border ao método .save().

import segno
qrcode = segno.make('Vampire Blues')
qrcode.save('vampire-blues.png', border=5)
vampire-blues
vampire-blues.png

Os códigos QR que criamos eram muito pequenos. Podemos fazê-los parecer maiores adicionando o parâmetro de escala como este:

import segno
qrcode = segno.make_qr('Welcome')
qrcode.save('welcome.png', scale=10)
welcome
welcome.png

Como criar códigos QR coloridos

Também podemos criar alguns códigos QR coloridos com o Segno – eles são realmente lindos. Isso é possível com a ajuda de muitos serializadores que aceitam os parâmetros escuro e claro para especificar a cor dos módulos escuros e claros.

Aqui estão alguns exemplos para lhe dar uma ideia do que é possível:

import segno
qrcode = segno.make("Green ave, Kingston")
qrcode.save('address.png', dark='darkred', light='lightblue', scale=10)
address
address.png
import segno
qrcode = segno.make("Green ave, Kingston")
# Módulos escuros com transparência alfa
qrcode.save('address2.png', dark='#0000ffcc', scale=10)
address2
address2.png
import segno
micro_qrcode = segno.make('Rain', error='q')
micro_qrcode.save('rain.png', dark='darkblue', data_dark='steelblue', scale=5)
rain
rain.png

Como salvar códigos QR em diferentes formatos

O Segno nos dá a flexibilidade de salvar nossos códigos QR gerados em diferentes formatos de arquivo, como .svg, .png, .eps e .pdf.

Veja como você faria isso:

import segno
qrcode = segno.make('Beatles')
qrcode.save('Beatles.svg')
qrcode.save('Beatles.png')
qrcode.save('Beatles.eps')

Casos de uso para códigos QR com exemplos

Como criar um código QR para compartilhamento de URL

Podemos gerar facilmente um código QR vinculado a um URL. Isso nos permite obter conteúdo on-line usando a mesma técnica com uma carga útil um pouco maior.

Vamos criar um código QR que vincule ao canal YouTube do autor deste artigo (Velcast Podcast) e depois vamos salvá-lo.

Aqui está o código para isso:

import segno

video = segno.make('https://www.youtube.com/channel/UCNhFxpk6hGt5uMCKXq0Jl8A')
video.save('Video.png', dark="yellow", light="#323524", scale=5)

O resultado:

Video
video.png

Como criar um código QR para uma configuração Wi-Fi

Também podemos usar a biblioteca do Segno para criar um código QR para configuração de Wi-Fi. O módulo segno.helpers oferece métodos de fábrica para gerar códigos QR padrão para codificação de coordenadas geográficas, vCards e MeCards, WIFI setups e EPC QR Codes.

O nível de correção de erro "L" é utilizado na criação de códigos QR. Se possível, aplicaremos o nível de correção de erro mais alto sem alterar a versão do QR Code.

A densidade da imagem do código QR diminui com a diminuição do nível de correção de erros, o que aumenta o tamanho mínimo de impressão. Quanto mais danos ele puder suportar antes de perder sua capacidade de leitura, maior será o nível de correção de erros.

O equilíbrio ideal entre densidade e resistência para uso geral de marketing é o Nível L ou o Nível M. Em ambientes industriais, onde pode ser difícil manter um código QR limpo ou sem danos, os níveis Q e H são as melhores opções.

from segno import helpers

qrcode = helpers.make_wifi(ssid='MyWifi', password='1234567890', security='WPA')
qrcode.designator
'3-M'
qrcode.save('wifi-access.png', scale=10)
wifi-access
wifi-access.png

Também podemos fazer esse código deste modo:


import segno
wifi_settings = {    
    ssid='(Wifi Name)',    
    password='(Wifi Password)',    
    security='WPA',
    }
wifi = segno.helpers.make_wifi(**wifi_settings)
wifi.save("Wifi.png", dark="yellow", light="#323524", scale=8)

Podemos usar qualquer uma das duas opções para o código. Eles resultam na mesma coisa, mas representam estilos diferentes de redação e apresentação.

Casos de uso comuns do uso de códigos QR para acesso Wi-Fi incluem:

  • Em vez de fornecer códigos de acesso exclusivos aos consumidores, as empresas podem usar códigos QR para oferecer acesso Wi-Fi gratuito. Os clientes precisam apenas escanear o código para ter acesso.
  • As famílias podem usá-lo para conceder aos visitantes acesso à Internet em casa.

Como codificar detalhes de contatos em códigos QR

Também podemos armazenar detalhes de contato em um código QR. Basta usar o método helpers.make_mecard() e passar os dados de contato. É importante observar que podemos passar uma lista para o método.

Vejamos um exemplo:

from segno import helpers
qrcode = helpers.make_mecard(name='Shittu Olumide', email='me@example.com', phone='+123456789')
qrcode.designator
'3-L'
# Alguns parâmetros aceitam vários valores, como e-mail, telefone, url
qrcode = helpers.make_mecard(name='Shittu Olumide', 
                             email=('me@example.com', 'email@example.com'),
                             url=['http://www.example.com', 'https://example.com/~olu'])
qrcode.save('mycontact.png', scale=5)

O Segno também permite que você execute as seguintes ações:

  • segno.helpers.make_geo: inicia o programa de mapeamento integrado em uma determinada latitude e longitude.
  • segno.helpers.make_email: envia uma mensagem usando um tópico e corpo predefinidos. É excelente para ativar qualquer número de atividades potenciais de um servidor de e-mail, como assinar boletins informativos, registrar sua chegada em algum lugar e muito mais.
  • segno.helpers.make_epc_qr: inicia um pagamento eletrônico.

Casos de uso de código QR

Agora que você aprendeu a criar códigos QR, aqui estão algumas de suas aplicações nas empresas e no nosso dia a dia:

  • Pagamentos digitais.
  • Compartilhamento de informações comerciais.
  • Compartilhamento de informações de contato pessoal.
  • Menus em código QR em restaurantes.
  • Facilitação de autenticação em Wi-Fi.

E muito mais.

Conclusão

Espero que este pequeno artigo tenha aguçado seu apetite e inspirado você a empregar códigos QR em seu trabalho e projetos pessoais.

Ao desenvolver alguns códigos QR atraentes e funcionais neste artigo, testamos o módulo do Segno para o Python. Você pode ler a documentação oficial para saber mais sobre a biblioteca.