Insira imagens no código QR QR
Os códigos QR finalmente se tornaram populares. Agora, as tags de código QR em anúncios de produtos grandes e pequenos nas ruas e becos estão por toda parte, e a maioria deles não são códigos QR puros simples, mas códigos QR com ícones de personalidade no meio.
Eu costumava fazer um programa que usa o projeto de código aberto do Google ZXing para implementar o código QR e a codificação e decodificação do código 1R e abriu o código -fonte (código de barras e codificação de código QR e decodificador implementados com C#). Hoje, continuo adicionando pequenas imagens no meio do código QR com base neste programa.
Conhecimento de fundo
O QRCode usa o código Reed-Solomon para fazer correções de bug. Para nós, a codificação de Reed Solomon tem duas características muito importantes. Primeiro, é um código explícito do sistema, o que significa que você pode ver diretamente as informações originais na codificação final. É como quando codificamos "Hello World", finalmente vemos "Hello World" e os poucos códigos tolerantes a falhas que o seguem. Segundo, a codificação de Reed Solomon pode ser "exorbitada". Após o resultado de duas codificações diferentes de Reed Salomon, é obtido um novo código Salomon de Reed e o código original desse novo código é o exclusivo ou dos dois códigos originais originais. Se você quiser saber por que esses dois recursos funcionam, consulte a codificação aritmética do campo finito e codificação de Reed-Solomon.
Qrcode
Uma imagem QRCode define alguns descritores exclusivos para ajudar pessoas ou computadores a se identificarem como um QRCode. Esse tipo de descritor varia ligeiramente com o tamanho do QRCode - quanto maior a imagem QRCode possui mais descritores. No entanto, para o reconhecimento humano, a característica mais óbvia é que os símbolos dos quatro cantos da imagem são fixa. Ao ver esses quatro cantos, os seres humanos reagirem instintivamente: este é um QRCode.
(De fato, podemos julgar o grau de redundância da codificação lendo os dois pontos de pixel no canto superior esquerdo da imagem. Definir o preto é 0 e o branco é 1. Então, se você vir 00, é a redundância de nível L, 01 é m, 10 é Q e 11 é a redução de nível H mais alta.
Com o trabalho acima, podemos saber facilmente a localização das informações originais do código na imagem. Em seguida, alterando suas informações de código original, você pode alterar os pixels na imagem para poder desenhar figuras para dentro. Dito isto, algumas das situações a seguir podem tornar as coisas mais interessantes.
Eu fiz o código QR para inserir a imagem:
Anteriormente, forneci a você um código 1QR gratuito que codifica o codec transformado usando o projeto de código aberto ZXing, mas não conseguiu inserir a imagem. Após algum esforço desta vez, a imagem foi inserida com sucesso no código QR e conseguiu codificar e decodificar. A chave para inserir imagens está no ajuste do coeficiente de tolerância a falhas do código QR, que é descrito em detalhes no código -fonte.
interface:
Para inserir imagens no código QR e decodificá -las normalmente, preste atenção aos dois pontos a seguir:
1. O coeficiente de tolerância a falhas de definir o código QR deve ser alto;
No projeto Zxing, o coeficiente de tolerância a falhas pode ser definido quando o código QR for gerado:
Set codehinttype.error_correction para errorCorrectionLevel.h
// Construct QR Code Writer MultiformatWriter MutiWriter = new com.google.zxing.multiformatWriter (); Dica hashtable = new hashtable (); hint.add (codehinttype.character_set, "utf-8"); hint.add (codehinttype.error_correction, com.google.zxing.qrcode.decoder.errorCorrectionLevel.h); // gerar código QR bytematrix bm = mutiwriter.encode (txtmsg.text, com.google.zxing.barcodeFormat.qr_code, 300, 300, dica); Bitmap img = bm.tobitmap ();
2. O tamanho e a posição da imagem inseridos no meio devem ser apropriados;
Se a imagem do meio for muito grande e cobrir a maior parte da área do código QR, definitivamente não funcionará. Se for muito pequeno, não terá um efeito personalizado.
Então, quão grande é adequado? De acordo com as características do código QR descrito no artigo anterior, os três cantos com quadrados são áreas de dados, que não podem ser cobertas. Somente a área nos cantos do meio e inferior direito pode ser coberta, mas não deve ser muito grande.
Após o teste, é mais apropriado ter um pequeno tamanho de imagem no meio da conta de 2/7 da largura total do código QR, que não apenas satisfaz a clareza da imagem, mas também não afeta os dados criptografados do código QR.
As imagens pequenas são melhor colocadas no centro e a forma pode ser irregular.
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!