Java implémente le codage et le décodage du code QR QRCODE
Certaines des principales bibliothèques de classe impliquées sont pratiques pour tout le monde pour télécharger:
Code Lib: QRCODE_SWETAKE.JAR (Introduction du site officiel - http://www.swetake.com/qr/index-e.html)
Decode lib: qrcode.jar (Introduction du site officiel - http://sourceforge.jp/projects/qrcode/)
【1】 Codage:
Java Code qrcodeenderderhandler.java
Package Michael.qrcode; import java.awt.color; import java.awt.graphics2d; Importer java.awt.image.bufferedImage; Importer java.io.file; import javax.imageio.imageio; import com.swetake.util.qrcode; / ** * QR Générateur de code * @blog http://sjsky.iteye.com * @author Michael * / classe publique QrcodeEncoderHandler {/ ** * générer QR Code (Qrcode) Image * @param contenu * @param imgpath * / public void Encoderqrcode (String Content, String iMgpath) {try {qrcoderqrcode (String Content, String iMgpAt Qrcode (); qrcodeHandler.setQrCodeErrorCorrect ('M'); qrcodeHandler.setQrCodeEncodeMode ('b'); qrcodeHandler.setQrCodeVersion (7); System.out.println (contenu); Byte [] ContentBytes = content.getBytes ("GB2312"); BufferedImage bufimg = new BufferedImage (140, 140, bufferedImage.type_int_rgb); Graphics2d gs = bufimg.creategraphics (); gs.setbackground (color.white); gs.Clearrect (0, 0, 140, 140); // Définir la couleur de l'image> Black Gs.SetColor (Color.Black); // Définir le décalage à ne pas définir peut provoquer une erreur d'analyse int pixoff = 2; // Sortie Contenu> QR Code if (ContentBytes.Length> 0 && ContentBytes.Length <120) {boolean [] [] codeout = qrcodeHandler.calqrcode (contentBytes); pour (int i = 0; i <codeout.length; i ++) {for (int j = 0; j <codeout.length; j ++) {if (codeout [j] [i]) {gs.fillrect (j * 3 + pixoff, i * 3 + pixoff, 3, 3); }}}} else {System.err.println ("Qrcode Content Bytes Longueur =" + ContentBytes.Length + "Pas dans [0,120]."); } gs.dispose (); bufimg.flush (); Fichier imgfile = nouveau fichier (imgpath); // Générer le code QR QRCODE Image ImageIo.Write (bufimg, "png", imgfile); } catch (exception e) {e.printStackTrace (); }} / ** * @param args les arguments de ligne de commande * / public static void main (string [] args) {string imgpath = "d: /test/twocode/michael_qrcode.png"; String Content = "Hello Big, Small, bienvenue sur qrcode!" + "/ nmyblog [http://sjsky.iteye.com]" + "/ nemail [[email protected]]" + "/ ntwitter [@suncto]"; QRCodeEncoderHandler Handler = new QrCodeEncoderHandler (); handler.encoderqrcode (contenu, imgpath); System.out.println ("Encodeur QRCode Success"); }}L'image du code QR généré après l'exécution est la suivante:
Pour le moment, vous pouvez utiliser le logiciel de numérisation du code QR de votre téléphone mobile (j'utilise: Android Story QR Code) pour le tester. Les captures d'écran de l'identification réussie sont les suivantes:
Des amis qui l'aiment peuvent le télécharger et l'essayer, et faire des cartes de visite ou des choses qu'ils aiment. Bien sûr, Java peut également décoder les images de code QR, veuillez consulter le contenu suivant sur le décodage.
【2】 Décodage:
Java Code QrcodeDeccoderHandler.java
Package Michael.qrcode; Importer java.awt.image.bufferedImage; Importer java.io.file; Importer java.io.ioException; import javax.imageio.imageio; import jp.sourceforge.qrcode.qrcodeDecoder; import jp.sourceforge.qrcode.data.qrcodeImage; import jp.sourceforge.qrcode.exception.decodingFailedException; / ** * @blog http://sjsky.iteye.com * @author michael * / public class qrcodedecoderhandler {/ ** * Decoderqrcode * @param imgpath * @return String * / public String Decoderqrcode (String imgpath) {// qrcode code fichier fichier fichier imagefilefile = new file (imgpath); BufferedImage bufimg = null; String decodedData = null; try {bufimg = imageo.read (imagefile); QRCODEDECODER DECODER = NOUVEAU QRCODEDECODER (); decodedData = new String (decoder.decode (new J2Seimage (bufimg))); // essayez {// system.out.println (new String (decodedData.getBytes ("gb2312"), // "gb2312")); //} catch (exception e) {// // todo: gère exception //}} catch (ioException e) {System.out.println ("Erreur:" + e.getMessage ()); e.printStackTrace (); } catch (decodingFailedException dfe) {System.out.println ("error:" + dfe.getMessage ()); dfe.printStackTrace (); } Retour DecodedData; } / ** * @param args les arguments de ligne de commande * / public static void main (String [] args) {qrcodedecoderhandler handler = new qrcodedecoderhandler (); String imgpath = "d: /test/twocode/michael_qrcode.png"; String decoderContent = handler.decoderqrcode (imgPath); System.out.println ("Le résultat de l'analyse est le suivant:"); System.out.println (DecoderContent); System.out.println ("=========== Succès du décodeur !!!"); } class J2SeImage implémente qrcodeImage {bufferedImage bufimg; public j2seimage (bufferedImage bufimg) {this.bufimg = bufimg; } public int getWidth () {return bufimg.getWidth (); } public int getheight () {return bufimg.getheight (); } public int getPixel (int x, int y) {return bufimg.getrgb (x, y); }}}Les résultats en cours d'exécution sont les suivants (le contenu décodé est cohérent avec le contenu précédemment entré):
Les résultats de l'analyse sont les suivants:
Bonjour grand, petit, bienvenue sur qrcode!
Myblog [http://sjsky.iteye.com]
Email [[email protected]]
Twitter [@suncto]
=========== Succès du décodeur !!!
Ce qui précède est la collection du codage et du décodage du code QR Java QRCODE. Nous continuerons d'ajouter des informations pertinentes à l'avenir. Merci pour votre soutien à ce site!