Um QR code decodifica a 1,2:1. Não projete nem perto disso
pela equipe KoloQRPesquisa

Nem a Apple nem o Google publicam um limite de contraste para os aplicativos de câmera que leem a maior parte dos QR codes, então todo número citado como o limite do iPhone ou do Android vem de uma medição que ninguém publicou. O que dá para ler é o código-fonte do ZXing, o decodificador de código aberto por trás de boa parte de todo o resto: ele trabalha em blocos de 8 x 8 pixels e trata um bloco cujos pixels mais claro e mais escuro estão a 24 níveis de distância, numa escala de 255, como um bloco sem borda alguma. Isso é uma taxa de contraste de cerca de 1,24:1 - um cinza mal visível sobre branco. O decodificador não é a restrição. Papel que reflete 85% em vez de 100%, tinta que se espalha, reflexo que levanta os pretos e meio milímetro de borrão de movimento são a restrição, e são a razão de os números de trabalho serem 4:1 em tela e 7:1 no impresso.
Pontos principais
- Nem a Apple nem o Google publicam um limite de contraste para a leitura de QR code embutida no iOS e no Android, então um número citado como "o" limite do iPhone ou do Android não é uma medição que alguém possa conferir. O que dá para conferir é o código-fonte publicado do ZXing, o decodificador de código aberto, e a norma de qualidade de impressão ISO/IEC 15415.
- O binarizador híbrido do ZXing trabalha em blocos de 8 x 8 pixels e trata um bloco cujos pixels mais claro e mais escuro estão a 24 níveis de distância, numa escala de 255, como um bloco sem borda alguma. Contra o branco, 24 níveis é o cinza #E7E7E7 - uma taxa de contraste de cerca de 1,24:1.
- Projete em 4:1 para tela e 7:1 para impressão, e trate 3:1 como a linha abaixo da qual um código não deve ir para produção. A distância entre 1,24:1 e 7:1 não é superstição: é o papel, a luz do ambiente, o reflexo e o borrão que subtraem do número do design antes de o decodificador ver qualquer coisa.
- Uma taxa de contraste não é o que uma câmera mede. A taxa pesa o verde em 71% do brilho percebido e acrescenta um termo de flare; o canal de luminância de uma câmera pesa o verde em 59% e não acrescenta nada. As duas mais discordam em vermelho, verde e azul saturados, e a taxa é a mais severa delas.
- Borrão e contraste baixo se multiplicam em vez de se somar, porque o borrão tira a média dos pixels vizinhos e portanto reduz a distância entre o mais claro e o mais escuro dentro de cada bloco - exatamente a grandeza que o binarizador usa como limiar. Um código que sobrevive a 3:1 numa foto parada falha a 3:1 numa mão em movimento.
Ninguém publica o número, e é daí que se parte
Não existe limite de contraste publicado para a leitura de QR code embutida nas câmeras do iPhone e do Android. A detecção de códigos de barras da Apple fica dentro do framework Vision e a do Android dentro do Google Play Services, ambos fechados, ambos sem documentação sobre este ponto, e nenhum dos dois jamais declarou um mínimo. Todo artigo que aponta um número - 3:1, 4:1, 40% - está citando uma diretriz de design escrita para outra coisa ou não está citando nada.
Vale dizer isso com todas as letras em vez de contorná-lo, porque o formato da resposta honesta decorre daí. Três coisas dá para estabelecer sem ter um laboratório: o que um decodificador de código aberto faz, porque o código-fonte dele é público; o que a norma de qualidade de impressão mede, porque é uma norma publicada; e o que um código específico faz num celular específico, porque isso leva vinte minutos e uma impressora. Todo o resto sobre este assunto é a impressão de alguém.
A pergunta continua sendo feita porque o contraste é a única variável de um QR code que um designer controla sem querer. O tamanho do módulo é uma decisão deliberada. A correção de erros é uma decisão deliberada. A cor é escolhida para uma paleta de marca três anos antes de alguém pensar num QR code, e o código a herda. Então a pergunta prática não é "qual é o mínimo" e sim "quanta margem esta paleta me deixa", e essa tem resposta.
O que um decodificador de fato mede é uma diferença local
Um decodificador nunca compara a sua cor de frente com a sua cor de fundo. Ele converte o quadro da câmera num único canal de cinza, decide para cada pequena vizinhança de pixels onde fica a fronteira entre escuro e claro naquela vizinhança, e lê os módulos a partir do resultado. A binarização é a etapa em que um decodificador transforma uma fotografia em tons de cinza em pixels puramente pretos e brancos antes de tentar ler qualquer módulo. Tudo o que diz respeito à tolerância a contraste é decidido ali.
O ZXing é o decodificador que vale ler, porque é o único amplamente usado cujo código-fonte é público. Seu binarizador híbrido padrão divide a imagem em blocos de 8 x 8 pixels, calcula o pixel mais claro e o mais escuro de cada bloco e fixa o limiar daquele bloco na metade do caminho entre os dois. Abaixo de uma dimensão de imagem de 40 pixels ele abandona a abordagem local e aplica um limiar à imagem inteira de uma vez.
A constante interessante é a guarda desse laço de blocos. Se a diferença entre o pixel mais claro e o mais escuro de um bloco é 24 ou menos, numa escala de 255, o ZXing não calcula um limiar a partir dele - presume que o bloco contém só pixels claros ou só escuros e toma emprestada uma estimativa dos vizinhos. Vinte e quatro níveis abaixo do branco é o cinza #E7E7E7, que é uma taxa de contraste de cerca de 1,24:1. Numa imagem digital limpa e com tamanho de módulo generoso, esse é o piso.
Duas consequências decorrem daí, e as duas são mais úteis que o número em si. A primeira é que o contraste é medido localmente, mais ou menos na área de alguns módulos, e não ao longo da página - que é por que um degradê lento atrás de um código é bem menos perigoso do que parece, e por que uma fotografia atrás de um código é fatal. Um degradê mantém a diferença local intacta em todo lugar; uma fotografia inverte de que lado da fronteira um módulo cai no meio do caminho do símbolo.
A segunda é que contraste e tamanho são o mesmo problema com roupas diferentes. Os blocos são de oito por oito pixels da câmera, e não de oito por oito módulos, então quantos módulos caem dentro de um bloco depende inteiramente do tamanho com que o símbolo chega ao sensor. Um código que preenche o quadro ganha vários blocos por módulo e um limiar calculado a partir das bordas do próprio módulo. Um código fotografado de longe demais ganha um bloco cobrindo vários módulos e um limiar tirado da média de todos eles, o que é uma diferença efetiva menor a partir exatamente da mesma arte. Dimensionar um código para sua distância de leitura é, portanto, parte do orçamento de contraste dele, e não um assunto separado.
O número do design e o número que chega à câmera são diferentes
Tudo entre o arquivo de design e o sensor de imagem subtrai contraste, e as perdas se acumulam em vez de se cancelarem. Essa é a razão inteira de os números recomendados ficarem seis vezes acima do piso do decodificador, e vale itemizar em vez de resumir, porque a maioria dos itens tem conserto e os consertos são baratos.
- O papel não é branco. Papéis não revestidos de escritório e de offset refletem mais ou menos 80% a 90% da luz que os atinge. Uma taxa de 21:1 no design não chega como 21:1; chega como aquilo que o papel permitir antes de uma gota de tinta ser depositada.
- A tinta se espalha. Módulos escuros crescem para dentro das células claras ao lado em papéis absorventes, o que eleva o valor mais escuro e baixa o mais claro dentro de cada bloco que o decodificador mede. Kraft, papel-jornal e papel térmico de cupom são os piores.
- Brilho e laminação acrescentam luz aos dois. A reflexão especular joga a mesma quantidade de luz branca nos módulos escuros e nos claros, o que levanta o nível de preto e comprime a taxa - a mesma aritmética do termo de flare na fórmula de contraste. Uma laminação fosca custa um pouco de nitidez e devolve mais contraste do que custa.
- A luz do ambiente faz a mesma coisa. Um código atrás de uma vitrine à luz do dia tem um véu de reflexo por cima. Um código num restaurante escuro tem uma câmera aumentando o ganho do sensor, o que acrescenta ruído justamente à grandeza que o binarizador mede.
- A exposição automática é ajustada para o quadro, não para o código. Um código escuro num rótulo claro e pequeno dentro de uma foto quase toda escura é exposto pela parte escura, e o rótulo estoura em direção ao branco arrastando os módulos junto.
- O borrão é o multiplicador. Erro de foco e movimento da mão tiram a média de cada pixel com os vizinhos, e tirar média é precisamente o que reduz a distância entre o mais claro e o mais escuro dentro de um bloco de 8 x 8. Contraste baixo e um leve borrão não se somam, eles se multiplicam, e é por isso que um código no limite passa quando alguém firma o celular e falha quando não firma.
As telas têm sua própria versão da mesma lista, o que surpreende quem imagina que um display é um ambiente controlado. Um celular com 20% de brilho sob sol, atrás de uma película fosca, mostrando um código dentro de um navegador que aplicou um filtro de modo escuro nele, não está entregando a taxa que o arquivo de design diz. A taxa do design é o teto do que dá para alcançar, nunca o valor que chega.
Então a resposta para "de quanto contraste os celulares precisam" é que os celulares precisam de muito pouco e os fluxos de trabalho precisam de muito. A margem que você está orçando não é margem contra o decodificador. É margem contra as oito coisas acima, nenhuma delas visível no monitor em que a decisão é tomada.
A escada de contraste: um teste que produz o seu próprio número
O jeito de descobrir o piso de contraste de um trabalho específico é imprimir o mesmo código em oito níveis decrescentes de contraste no material real e anotar onde ele para de funcionar. Isso leva uns vinte minutos, custa uma folha de papel e produz um número para a sua impressora, o seu papel e os celulares dos seus clientes, e não para os de outra pessoa.
Os oito degraus abaixo são cinzas sobre branco, escolhidos para que cada um caia numa taxa de contraste redonda. Gere o mesmo conteúdo oito vezes, uma por cor de frente, mantenha o fundo branco puro, mantenha a forma e o tamanho do módulo idênticos nos oito e disponha todos numa folha só, na ordem dada.
| Cor de frente sobre branco | Taxa de contraste | Diferença de luminância (de 255) | Diferença de refletância |
|---|---|---|---|
| #000000 | 21:1 | 255 | 100% |
| #595959 | 7,0:1 | 166 | 90% |
| #7F7F7F | 4,0:1 | 128 | 79% |
| #949494 | 3,0:1 | 107 | 70% |
| #A3A3A3 | 2,5:1 | 92 | 63% |
| #B7B7B7 | 2,0:1 | 72 | 53% |
| #D2D2D2 | 1,5:1 | 45 | 36% |
| #E7E7E7 | 1,24:1 | 24 | 20% |
- Imprima os oito degraus no tamanho final e no material final. Uma folha, os oito códigos no tamanho que o código real terá, no material que o trabalho real usa. Uma impressão a laser de escritório em papel comum não é o teste se o trabalho vai para kraft, um rótulo de garrafa ou um cardápio - o espalhamento da tinta varia por material e é subtraído do mesmo orçamento que a cor.
- Escaneie todos os degraus com dois celulares, só com a câmera nativa. Um iOS e um Android, usando o aplicativo de câmera embutido em vez de um aplicativo de leitura. Aplicativos de leitura dedicados são mais tolerantes que os nativos e vão passar em degraus que seus clientes não conseguem. Anote o primeiro degrau que falha em qualquer um dos dois celulares.
- Repita sob a luz em que o código vai viver. Leve a mesma folha para o lugar real - a mesa do restaurante, a prateleira da loja, a placa ao ar livre no fim da tarde. A iluminação move o ponto de falha em mais degraus que qualquer outra variável isolada, e este é o passo que costuma ser pulado.
- Repita na distância real e num ângulo real. Escaneie de onde uma pessoa realmente fica, e uma vez a uns 30 graus fora da perpendicular. A distância reduz os pixels por módulo, o que encolhe a diferença que cada bloco enxerga; o ângulo custa mais um pouco da mesma coisa.
- Repita sem firmar o celular. Segure do jeito descuidado, com uma mão só, em movimento. O borrão reduz a distância entre o mais claro e o mais escuro dentro de cada bloco, então esta rodada normalmente falha um degrau antes da cuidadosa. O número descuidado é o número real.
- Projete dois degraus acima da primeira falha. Pegue o pior resultado entre todas as condições e suba dois degraus na escada a partir dele. Dois degraus são a margem de trabalho para as variáveis que o teste não conseguiu incluir - um celular diferente, um dia mais frio, uma cabeça de impressão gasta, uma laminação que a amostra não tinha.
Um degrau merece uma observação. A linha #000000 é um controle, e não um teste: se preto sobre branco falha naquela folha, o problema é tamanho, foco, reflexo ou zona silenciosa, e nada mais abaixo na escada vai lhe dizer coisa alguma até isso ser resolvido.
Cor não é contraste, e as duas métricas discordam
A taxa de contraste de uma cor prevê mal como essa cor se comporta na câmera, porque os dois números são construídos de formas diferentes. Uma taxa de contraste é um número único que compara a luminância relativa de duas cores, indo de 1:1 para duas cores idênticas até 21:1 para preto contra branco. Ela pesa o verde em 71% do brilho percebido, aplica uma curva de gama e acrescenta um pequeno termo de flare que penaliza de propósito os pares escuros. O canal de cinza de uma câmera pesa o verde em 59%, o vermelho em 30% e o azul em 11%, e não acrescenta nada.
| Cor sobre branco | Taxa de contraste | Diferença de luminância (de 255) |
|---|---|---|
| Preto #000000 | 21:1 | 255 |
| Azul-marinho escuro #0F172A | 17,9:1 | 232 |
| Vermelho escuro #7F1D1D | 10:1 | 197 |
| Azul puro #0000FF | 8,6:1 | 226 |
| Azul de marca #1D4ED8 | 6,7:1 | 176 |
| Verde web #008000 | 5,1:1 | 180 |
| Vermelho #DC2626 | 4,8:1 | 163 |
| Vermelho puro #FF0000 | 4,0:1 | 179 |
| Verde #16A34A | 3,3:1 | 144 |
| Magenta #FF00FF | 3,1:1 | 150 |
| Laranja #FF7F00 | 2,5:1 | 104 |
| Âmbar #F59E0B | 2,2:1 | 88 |
| Verde puro #00FF00 | 1,4:1 | 105 |
| Ciano #00FFFF | 1,25:1 | 76 |
| Amarelo #FFFF00 | 1,07:1 | 29 |
O azul puro é o destaque e é o achado útil da tabela. Com 8,6:1 e uma diferença de luminância de 226, ele fica atrás só do quase preto nas duas medidas, o que faz do azul escuro a cor saturada mais segura para um QR code por larga margem. Vermelhos escuros e ameixas escuros vêm logo depois. Qualquer cor cuja taxa venha de ela ser escura, e não de ser saturada, se comporta bem. Quais paletas isso deixa utilizáveis, e onde elas cabem, é o assunto dos QR codes coloridos.
O verde puro é onde as duas métricas mais divergem e onde ainda assim vale confiar na taxa. Sua taxa de 1,4:1 parece catastrófica enquanto sua diferença de luminância de 105 empata com os 104 do laranja, então a câmera enxerga mais num código verde do que a taxa sugere. Ainda assim não é suficiente: 105 de 255 é menos da metade da escala antes de o papel, a luz e a lente tirarem sua parte, e códigos verdes são os que funcionam de forma confiável no mockup e falham na prateleira.
Amarelo, ciano e âmbar falham nas duas medidas e não há técnica que os salve. Amarelo sobre branco dá à câmera uma diferença de 29 níveis em 255 - mal acima dos 24 em que o ZXing para de procurar borda alguma. Um código amarelo não é um código arriscado, é um objeto decorativo que ocasionalmente é lido em condições perfeitas.
O conserto para quando uma cor de marca não alcança o alvo é sempre o mesmo e sempre numa direção só: escureça o código, não clareie o fundo. Os fundos precisam ficar perto do branco para a diferença de refletância sobreviver à impressão, e uma cor de marca levada dois ou três passos mais escura costuma manter sua identidade e dobrar sua taxa. Onde isso for inaceitável, ponha a cor de marca na moldura, no rótulo e na chamada para ação em volta do código e deixe o código em si escuro - QR codes com identidade de marca são principalmente isso, e não custam contraste nenhum.
Módulos claros sobre fundo escuro são outro problema
Um QR code invertido - módulos claros sobre fundo escuro - pode ter uma taxa de contraste perfeita e ainda assim falhar, porque a taxa é simétrica e o decodificador não é. Branco sobre preto dá os mesmos 21:1 que preto sobre branco, e nenhuma checagem de contraste em lugar nenhum vai sinalizar isso. O que varia é se o software do outro lado está disposto a tentar a imagem nos dois sentidos.
Os aplicativos de câmera atuais do iPhone e do Android em geral dão conta de códigos invertidos, e isso vem melhorando de forma constante. É no hardware mais antigo que a coisa quebra: imageadores fixos, leitores de PDV e equipamento de armazém frequentemente esperam dados escuros sobre fundo claro e não têm passagem de inversão, e o próprio ZXing só inverte quando o aplicativo que o chama envolve a imagem na fonte de luminância invertida que ele oferece - uma decisão de quem construiu o aplicativo, não do código.
A regra prática é que inversão é uma aposta no leitor, não uma propriedade do código. Para um cartaz, uma tela ou um post de rede social lido por celulares, um código invertido é uma escolha de design razoável. Para qualquer coisa que um cliente possa escanear com equipamento desconhecido, ou qualquer coisa lida num caixa, é cara ou coroa apostada por motivos estéticos, e a versão segura - um código escuro dentro de um painel claro, sobre o fundo escuro - custa um retângulo.
Há mais uma assimetria que vale nomear, porque ela é invisível na tela. Imprimir um código claro sobre fundo escuro significa depositar uma grande área escura sólida, e cobertura sólida se espalha mais que cobertura esparsa. Os módulos claros é que encolhem, e são justamente eles que o decodificador está lendo como a metade clara do par. Um código invertido perde, portanto, mais contraste na impressão que o mesmo código no sentido normal.
O que a norma de impressão mede no lugar de uma taxa
O mundo do QR code tem sua própria medida de contraste e ela não é uma taxa. O contraste do símbolo é a medida de qualidade de impressão definida pela ISO/IEC 15415 como a diferença de refletância entre o ponto mais claro e o ponto mais escuro de um símbolo. Ele é expresso em pontos percentuais e recebe nota de A a F. Um verificador o informa ao lado de modulação, dano a padrão fixo, não uniformidade da grade e correção de erros não usada, e a nota geral do símbolo é a pior delas.
A distinção importa porque uma diferença de refletância e uma taxa de contraste não são impressões conversíveis da mesma coisa. Refletância é luz linear; uma taxa de contraste aplica uma curva de gama e um termo de flare por cima dela. Faça a conta e a divergência é grande: uma diferença de refletância de 40%, o nível comumente exigido em especificações de varejo, corresponde, contra o branco ideal, a uma taxa de contraste de cerca de 1,6:1, e uma diferença de 70% a cerca de 3:1. Um par de cores que um verificador de acessibilidade web reprova de cara pode ser um código de barras perfeitamente conforme.
Isso não é licença para projetar em 3:1. É a explicação de por que as duas indústrias discordam: um verificador mede uma amostra impressa sob luz controlada, a uma distância fixa e com o símbolo preenchendo a abertura, enquanto a taxa de um designer precisa sobreviver a um celular saindo do bolso. A norma está medindo o artefato, e a taxa está sendo usada como aproximação da cadeia inteira.
A armadilha dentro da norma é a luz que ela usa. A verificação de código de barras é feita sob iluminação vermelha em 660 nanômetros, o comprimento de onda que os leitores a laser originais usavam e que os verificadores modernos ainda emulam; a nota de um símbolo é citada junto com ela, como em 4.0/20/660. Tinta vermelha reflete luz vermelha, então um código vermelho em papel branco quase não tem contraste em 660 nm e recebe nota de ilegível enquanto é lido perfeitamente em qualquer celular. Essa é a razão específica de um QR code vermelho passar em toda checagem que um designer faz e falhar num caixa ou num imageador de armazém.
A regra que decorre disso: qualquer coisa lida por equipamento fixo em vez de por clientes deveria ser preta sobre branco, no tamanho que a documentação daquele equipamento pedir, e verificada em vez de avaliada a olho. Qualquer coisa lida por celulares tem todo o espaço de cor disponível, menos as partes que a tabela acima descarta.
Os números a mirar no design
Mire numa taxa de contraste de pelo menos 7:1 para qualquer coisa impressa, pelo menos 4:1 para qualquer coisa exibida em tela, e trate 3:1 como o ponto abaixo do qual um código não deve ir para produção, por melhor que ele fique no mockup. Esses números são alvos de design com as perdas das seções anteriores já embutidas, e não limiares que alguém mediu num celular.
- Impressão em condições não controladas - cardápios, embalagens, sinalização, adesivos. 7:1 ou melhor. Preto ou quase preto sobre branco é 21:1 e não custa nada; a distância entre 21:1 e 7:1 é onde uma cor de marca cabe.
- Impressão em papel absorvente ou difícil - kraft, papel-jornal, cupons, tecido, superfícies gravadas. Não gaste contraste nenhum. Preto sobre o fundo mais claro disponível, e ponha o orçamento no tamanho do módulo.
- Telas - sites, apresentações, telas de aplicativo, vídeo. 4:1 ou melhor, no entendimento de que o brilho de quem olha e a luz do ambiente estão fora do seu controle.
- Qualquer coisa lida por leitores fixos, ou regida por uma especificação. Preto sobre branco, verificado. Cor aqui é risco sem vantagem, e vermelho é um risco com um modo de falha específico.
- Abaixo de 3:1. Não coloque em produção. Não é um código no limite que alguns celulares vão dar conta - é um código cuja margem inteira foi gasta antes de o papel ser escolhido.
Uma checagem fácil de esquecer: os três marcadores de canto contam. Um leitor localiza um QR code pelos seus padrões de localização antes de decodificar qualquer coisa, então um código cujos módulos são escuros e cujos cantos estão numa cor de destaque clara tem seu contraste mais fraco exatamente onde a falha é irrecuperável. Seja qual for a ferramenta que você usa, avalie a cor do canto contra o fundo separadamente e tome o pior dos dois números como o contraste real do código.
O KoloQR, um gerador de QR code gratuito com QR codes circulares e de formas personalizadas, calcula esse par automaticamente: a etiqueta ao lado da prévia informa a taxa de contraste da cor do padrão e da cor dos cantos contra o fundo, mostra a pior das duas e aprova em 4:1. Ele julga um fundo transparente como branco, já que é aí que um código transparente costuma parar. Você pode montar a escada no gerador exportando o mesmo conteúdo em cada um dos oito cinzas acima e imprimindo a folha.
O limite honesto de tudo isto: nenhum desses números garante uma leitura em hardware que não testamos, e deliberadamente não publicamos uma cifra para nenhum celular específico porque não medimos nenhuma. A escada existe para que você possa. Vinte minutos e uma folha de papel produzem um número verdadeiro para o seu trabalho, o que vale mais que qualquer número deste post.
Quando o contraste não é o problema de verdade
A maioria dos QR codes de que se culpa o contraste falha por uma de outras quatro razões, e aumentar o contraste em qualquer uma delas não muda nada. Percorrer esta lista primeiro é mais rápido que rodar a escada, porque três das quatro são visíveis sem celular.
- O código é pequeno demais para a distância. Abaixo de mais ou menos 0,4 mm por módulo no impresso, as câmeras de celular sofrem sejam quais forem as cores. Meça um módulo antes de ajustar qualquer outra coisa.
- A zona silenciosa foi cortada. A ISO/IEC 18004 especifica uma margem livre de quatro módulos em volta do símbolo, e um designer recuperando esse espaço para a diagramação é uma das causas mais comuns de um código que fotografa lindamente e nunca decodifica.
- A imagem foi salva como JPEG em algum ponto do fluxo de trabalho. A compressão JPEG põe anéis fracos em volta de cada módulo, o que baixa a diferença local dentro exatamente dos blocos que o binarizador mede. Parece um problema de contraste e é um problema de formato de arquivo.
- Reflexo. Uma laminação brilhante ou uma tela refletindo a luz do teto não reduz em nada o contraste do design - ela acrescenta uma mancha clara sobre parte do símbolo, e os blocos embaixo dessa mancha perdem sua diferença enquanto o resto do código está bem. Inclinar o celular resolve, e é esse o sinal.
A correção de erros também pertence a esta lista, pela negativa. Subir o nível de M para H não ajuda um código de baixo contraste, porque a correção de erros repara módulos que o decodificador leu errado e o baixo contraste impede o decodificador de ler o símbolo. O trade-off entre capacidade de recuperação e tamanho de módulo é uma decisão real, e não é a alavanca para este problema. A alavanca para este problema é uma cor de frente mais escura, um fundo mais claro ou um código maior.
A falha relacionada que vale conhecer, já que decoração e contraste saem do mesmo orçamento: formas decorativas de módulo entintam menos de cada célula que módulos quadrados, o que reduz a diferença local que o binarizador mede do mesmo jeito que o baixo contraste reduz. O que uma forma personalizada de QR code custa de verdade percorre essa aritmética, e os dois efeitos se somam - um código estilizado numa cor de marca clara está gastando duas vezes de um orçamento só.
Crie seu QR code
Grátis, sem conta e sem marca d'água. Escolha uma forma, adicione um logo, confira o contraste e exporte SVG, PDF, EPS ou PNG: um código estático sem assinatura por trás.
Gerar QR codeQuestions? Answered
Como alvo de design, 7:1 para impressão e 4:1 para telas, com 3:1 como a linha abaixo da qual um código não deve ir para produção. O piso do próprio decodificador é bem mais baixo - o ZXing para de detectar borda quando os pixels mais claro e mais escuro de um bloco diferem em 24 de 255, cerca de 1,24:1 -, mas esse piso vale para uma imagem digital limpa, não para tinta em papel sob a luz de uma loja.
Nem a Apple nem o Google publicam um limite, então qualquer número específico que você vir citado não é uma medição que alguém possa conferir. Os dois decodificadores são de código fechado. O único ponto de referência legível é o ZXing, que desiste por volta de 1,24:1 numa imagem limpa, e a resposta prática para um trabalho real é imprimir uma escada de níveis decrescentes de contraste e achar onde a sua própria combinação de papel, luz e celulares falha.
Porque uma tela entrega o contraste do design e o papel não. O papel branco reflete de 80% a 90% em vez de 100%, a tinta se espalha para as células claras ao lado de cada módulo escuro, e o brilho ou a luz do ambiente acrescentam um véu claro sobre os dois. Um par que dá 3:1 no arquivo de design pode chegar à câmera mais perto de 2:1. Teste no material real e no tamanho final, nunca num monitor.
Em geral sim, se a cor for escura em vez de apenas saturada. Azuis escuros, azuis-marinhos e vermelhos escuros passam de 7:1 contra o branco e se comportam bem na câmera. Laranjas, âmbares, cianos e amarelos não, e nível nenhum de correção de erros os salva. Quando uma cor de marca não chega lá, escureça o código em vez de clarear o fundo - ou mantenha o código escuro e ponha a cor de marca na moldura em volta dele.
Nos celulares atuais, em geral sim. Em leitores mais antigos ou fixos, muitas vezes não. Uma taxa de contraste é simétrica, então branco sobre preto dá os mesmos 21:1 que preto sobre branco e nenhuma checagem de contraste vai avisar - o que varia é se o leitor tenta a imagem invertida. Códigos invertidos também perdem mais contraste na impressão, porque a cobertura escura sólida se espalha para dentro dos módulos claros. Use-os onde celulares forem os únicos leitores.
Um degradê em geral sobrevive e uma fotografia em geral não, e a razão é que decodificadores aplicam limiar localmente. O ZXing calcula uma fronteira separada entre claro e escuro para cada bloco de 8 x 8 pixels, então um fundo que muda devagar mantém a diferença local intacta em todo lugar. Uma fotografia muda mais rápido que o código, então em algum ponto do símbolo os módulos acabam do lado errado do limiar do próprio bloco.
Porque verificadores de código de barras e muitos leitores fixos leem sob luz vermelha em 660 nanômetros, e tinta vermelha reflete luz vermelha. Um código vermelho em papel branco quase não tem contraste nesse comprimento de onda mesmo que uma câmera colorida o veja com clareza. Essa é uma armadilha conhecida do mundo dos códigos de barras 1D e vale sem mudança nenhuma para QR codes. Qualquer coisa escaneada por equipamento fixo deveria ser preta sobre branco.
Não sobre branco. Amarelo sobre branco dá a uma câmera uma diferença de luminância de 29 níveis em 255, mal acima dos 24 em que o ZXing para de procurar borda alguma, e uma taxa de contraste de 1,07:1. Tons pastel ficam só um pouco melhores. Se uma paleta clara é a exigência, inverta o problema: um código escuro dentro de um painel claro mantém a paleta e mantém o contraste.
Não, e esse é o conserto errado mais comum. A correção de erros repara módulos que foram lidos de forma incorreta; o baixo contraste impede que o símbolo seja lido, porque a binarização acontece antes de existir qualquer dado para reparar. Subir o nível de M para H ainda deixa o símbolo mais denso na mesma largura impressa, o que encolhe cada módulo e piora um código que já estava no limite em vez de melhorá-lo.
Precisam de mais, no sentido de que falhar ali é irrecuperável. Um leitor localiza um QR code pelos seus três marcadores de canto antes de decodificar qualquer coisa, então cantos claros num código escuro põem o contraste mais fraco exatamente onde a correção de erros não alcança. Avalie a cor do canto contra o fundo separadamente e trate o pior dos dois números como o contraste real do código.
Continue explorando
Páginas que seguem de onde esta parou: o mesmo contexto, o mesmo tipo de código ou a próxima decisão a tomar.
Lojas físicas
Detalhes do produto, estoque e links de avaliação em etiquetas de gôndola, vitrines e placas de caixa.
Agências de eventos
Códigos produzidos para o evento de outra pessoa: redirecionamentos do cliente, especificação para expositores, tiragens de crachá e sinalização no tamanho da sala.
QR codes coloridos
Leve sua paleta para um QR code sem quebrá-lo: qual cor vai no padrão e qual pertence à moldura.
Banners
Roll-ups, banners de feira e de rua - o tamanho que a distância exige, a altura que funciona e por que mesh e vento quebram escaneamentos.
Veículos
Vans, carros e frotas - o tamanho que o código precisa ter visto da calçada e a parte da lataria onde ele sobrevive a rebites, frestas e sujeira de estrada.
Um QR code em anúncio de vídeo precisa de um terço da tela. Ele ganha um canto
Um QR code em anúncio de vídeo precisa ocupar de um quarto a um terço da altura da tela para que um celular no sofá consiga lê-lo. Quase todos os que você já viu são um logo num canto, e medimos o que acontece com eles.
Por que a KoloQR?
- Crie QR codes para sites, cardápios, Wi-Fi, PDFs e cartões de visita
- Personalize cores, logos e formas únicas
- Baixe arquivos PNG e SVG de alta qualidade
- Feito tanto para impressão quanto para o digital

