Insérer des images dans le code QR QR
Les codes QR sont enfin devenus populaires. Désormais, les balises de code QR sur les publicités de grands et petits produits dans les rues et les ruelles sont partout, et la plupart d'entre eux ne sont pas de simples codes QR purs, mais des codes QR avec des icônes de personnalité au milieu.
J'avais l'habitude de faire un programme qui utilise le projet open source de Google ZXing pour implémenter le code QR et l'encodage et le décodage du code 1R, et j'ai ouvert le code source (codage de code à barres et QR et décodeur implémenté avec C #). Aujourd'hui, je continue d'ajouter de petites images au milieu du code QR en fonction de ce programme.
Connaissances de base
QRCODE utilise le code Reed-Solomon pour faire des corrections de bogues. Pour nous, le codage de Reed Salomon a deux caractéristiques très importantes. Tout d'abord, il s'agit d'un code système explicite, ce qui signifie que vous pouvez voir directement les informations d'origine dans le codage final. C’est comme lorsque nous encodons «Hello World», nous voyons enfin «Hello World» et les quelques codes tolérants aux pannes qui le suivent. Deuxièmement, le codage de Reed Salomon peut être "exorbé". Une fois que le résultat de deux codages de Salomon Reed différents a été calculé, un nouveau code Reed Solomon sera obtenu et le code d'origine de ce nouveau code est l'exclusif ou des deux codes originaux d'origine. Si vous voulez savoir pourquoi ces deux fonctionnalités fonctionnent, consultez le codage arithmétique de champ fini et Reed-Solomon.
Qrcode
Une image QRCode définit certains descripteurs uniques pour aider les personnes ou les ordinateurs à s'identifier comme un QRCODE. Ce type de descripteur varie légèrement avec la taille du QRCODE - plus l'image QRCODE a plus de descripteurs. Cependant, pour la reconnaissance humaine, la caractéristique la plus évidente est que les symboles des quatre coins de l'image sont fixes. En voyant ces quatre coins, les humains réagissent instinctivement: c'est un QRCODE.
(En fait, nous pouvons juger du degré de redondance du codage en lisant les deux points de pixels dans le coin supérieur gauche de l'image. La définition du noir est 0 et le blanc est 1. Alors si vous voyez 00, c'est la redondance au niveau L, 01 est M, 10 est Q et 11 est la redondance de niveau H la plus élevée.
Avec le travail ci-dessus, nous pouvons facilement connaître l'emplacement des informations de code d'origine dans l'image. Ensuite, en modifiant vos informations de code d'origine, vous pouvez modifier les pixels dans l'image afin que vous puissiez dessiner des images à l'intérieur. Cela étant dit, certaines des situations suivantes peuvent rendre les choses plus intéressantes.
J'ai fait le code QR pour insérer l'image:
Auparavant, je vous ai fourni un code de code 1QR gratuit transformé à l'aide du projet open source ZXing, mais j'ai échoué à insérer l'image. Après quelques efforts cette fois, l'image a été insérée avec succès dans le code QR et a pu encoder et décoder. La clé pour insérer des images réside dans l'ajustement du coefficient de tolérance aux défauts du code QR, qui est décrit en détail dans le code source.
interface:
Pour insérer des images dans le code QR et les décoder normalement, faites attention aux deux points suivants:
1. Le coefficient de tolérance aux défauts de réglage du code QR doit être élevé;
Dans le projet ZXing, le coefficient de tolérance aux défauts peut être défini lorsque le code QR est généré:
Définissez EncodeHintType.Error_Correction sur ErrorCorrectionLevel.h
// Construire QR Code écrivain MultiformatWriter MutiWriter = new Com.google.zxing.multiformatwriter (); HashTable Hint = new HashTable (); hint.add (encodeHintType.character_set, "utf-8"); hint.add (encodeHintType.Error_Correction, com.google.zxing.qrcode.decoder.errorCorrectionLevel.h); // Générer le code QR ByTEMatrix BM = MutiWriter.Encode (txtmsg.Text, com.google.zxing.barcodeformat.qr_code, 300, 300, indice); Bitmap img = bm.tobitmap ();
2. La taille et la position de l'image insérées au milieu doivent être appropriées;
Si l'image du milieu est trop grande et couvre la majeure partie de la zone du code QR, cela ne fonctionnera certainement pas. S'il est trop petit, il n'aura pas d'effet personnalisé.
Alors, quelle est la taille? Selon les caractéristiques du code QR décrites dans l'article précédent, les trois coins avec des carrés sont des zones de données, qui ne peuvent pas être couvertes. Seule la zone dans les coins du milieu et du bas droit peut être couverte, mais elle ne doit pas être trop grande.
Après les tests, il est plus approprié d'avoir une petite taille d'image au milieu du compte 2/7 de la largeur totale du code QR, qui non seulement satisfait la clarté de l'image, mais n'affecte pas non plus les données cryptées du code QR.
Les petites images sont les mieux placées au centre et la forme peut être irrégulière.
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!