QR -Code ist ein Barcode -Bild, das geometrische Figuren der Schwarzweißebene verwendet, um Text, Bilder, URLs und andere Informationen durch entsprechende Codierungsalgorithmen aufzuzeichnen. Die folgende Abbildung
Funktionen des QR -Codes:
1. Codierung mit hoher Dichte, große Informationskapazität
Es kann bis zu 1850 Großbuchstaben oder 2710 Nummern oder 1108 Bytes oder mehr als 500 chinesische Zeichen aufnehmen, was ungefähr Dutzende von höheren Mälfesten als gewöhnliche Barcode -Informationen ist.
2. breites Codierungsbereich
Dieser Barcode kann digitalisierte Informationen wie Bilder, Geräusche, Texte, Signaturen, Fingerabdrücke usw. codieren und sie in Barcodes ausdrücken. Sie können Text in mehreren Sprachen darstellen; und sie können Bilddaten darstellen.
3.. Starke Fehlertoleranz und Fehlerkorrekturfunktion
Auf diese Weise kann der zweidimensionale Barcode aufgrund von Perforation, Befleckung usw. ordnungsgemäß beschädigt werden, und die Informationen können weiterhin wiederhergestellt werden, wenn der Schadensbereich 50%erreicht.
4. Zuverlässigkeit mit hoher Dekodierung
Es ist viel niedriger als die Fehlerrate der gewöhnlichen Barcode-Dekodierung von zwei Parteien pro Million, und die Fehlerrate beträgt nicht mehr als einteilige pro Million.
5. Verschlüsselungsmaßnahmen können eingeführt werden
Gute Vertraulichkeit und Antikounterfassing.
6. Niedrige Kosten, leicht zu machen, langlebig
Aufgrund der oben genannten Eigenschaften werden die QR -Codes immer beliebter und werden häufiger verwendet (Einzelheiten siehe Baidu -Enzyklopädie. Die Einführung steht nicht im Mittelpunkt dieses Artikels). Daher ist das Beherrschen der Entwicklung von QR -Codes eine sehr gute Wissensreserve. Daher erklärt dieser Artikel Ihnen, wie Sie QR -Codes generieren und analysieren.
1. Java
Erforderliches JAR -Paket: qrcode.jar
http://sourceforge.jp/projects/qrcode/
HILDIMEENVISIONCODE -Klasse: QR -Code -Operation Kernklasse
Paket qrcode; import Java.awt.Color; import Java.awt.graphics2d; import Java.awt.image.BuffeedImage; Import Java.io.File; Import Java.io.ioxception; Import Java.inputStream; Import Java.IO.OutputStream; jp.sourceforge.qrcode.QRCodeDecoder;import jp.sourceforge.qrcode.exception.DecodingFailedException;import com.swetake.util.Qrcode;public class TwoDimensionCode { /** * Generate QR code (QRCode) picture* @param content Store content* @param imgPath Picture path*/ public void CNCODERQRCODE (String -Inhalt, String imgPath) {this.encoderQrCode (Inhalt, ImgPath, "png", 7); } / *** QR -Code generieren (QRCode) Bild* @param content spec -Inhalt* @param Ausgabeausgabe Stream* / public void cncoderQrCode (String -Inhalt, Ausgabeausgabe) {this.encoderQrCode (Inhalt, Ausgabe, "PNG", 7); } / *** qr Code generieren (QRCode) Bild* @param content speichern content } / *** QR -Code generieren (QRCode) Bild* @param content spec -Inhalt* @param Ausgabeausgabe Stream* @param imgType Bildtyp* / public void cnoderqrCode (String -Inhalt, Ausgabestream -Ausgabe, String -IMGTYPE) {this.encoderQrCode (Inhalt, Output, IMGType, 7); } / *** qr Code generieren (QRCode) Bild* @param content speichern content Größe); Datei imgFile = neue Datei (IMGPath); // QR -Code QRCode Image ImageIo.Write (bufimg, imgType, imgFile) generieren; } catch (Ausnahme e) {e.printstacktrace (); }} / *** qr Code generieren (QRCode) Bild* @param content speichern content Größe); // QR -Code QRCode Image ImageIo.Write (bufimg, imgType, output) generieren; } catch (Ausnahme e) {e.printstacktrace (); }} / *** öffentliche Methode zum Generieren von QR -Code (QRCode) -Abbilder* @param Content Store Inhalt* @param imgType Bildtyp* @param Größe QR -Code -Größe* @return* / private bufferedimage qrcodecommon (String -Inhalt, String imgType, Int Size) {bufpuledimage bufimG = null; try {qrCode qrCodeHandler = new qrCode (); // Setzen Sie die QR -Code -Fehlerrate, die als L (7%), M (15%), Q (25%) und H (30%) ausgewählt werden kann. Je höher die Fehlerrate, desto weniger Informationen können gespeichert werden. Je kleiner die Anforderung für QR -Code -Klarheit QRCodeHandler.setQrCodeErrorCorrect ('M'); qrCodeHandler.setQrCodeEenCodemode ('B'); // Setzen Sie die QR-Codegröße mit einem Wertebereich von 1-40. Je größer der Wert ist, desto größer ist die Größe, desto größer sind die Informationen, die Sie QRCodeHandler.SetQrCodeVersion (Größe) speichern können. // Erhalten Sie das Byte-Array von Inhalten und setzen Sie das Codierungsformat Byte [] contentBytes = content.getBytes ("utf-8"); // Bildgröße int imgSize = 67 + 12 * (Größe - 1); bufimg = new bufferedImage (imgsize, imgsize, bufferedimage.type_int_rgb); Graphics2d gs = bufimg.createGraphics (); // Hintergrundfarbe GSSETBackground (color.white) festlegen; gs.clearrect (0, 0, imgsize, imgsize); // Bildfarbe festlegen> schwarz gs.setColor (color.black); // Set -Offset, nicht Einstellung, kann zu Parsenfehlern int pixoff = 2 führen. // Inhalt ausgeben> QR -Code if (contentBytes.length> 0 && contentBytes.length <800) {boolean [] [] codeout = qrCodeHandler.calqrCode (contentBytes); für (int i = 0; i <codeout.length; i ++) {für (int j = 0; j <codeout.length; j ++) {if (CodeOut [j] [i]) {Gs.FillRect (j * 3+pixoff, i * 3+pixoff, 3, 3); }}}} else {Neue Ausnahme werfen ("QRCode -Inhalt Bytes Länge =" + contentBytes.length + "Nicht in [0, 800]."); } Gs.Dispon (); bufimg.flush (); } catch (Ausnahme e) {e.printstacktrace (); } return bufimg; } / ** * QR -Code analysieren (QRCode) * @param imgPath Image Path * @return * / public String decoderQrCode (String imgPath) {// QrCode QR -Code -Bild -Datei -Datei -Datei -Datei -Datei -Datei = new Datei (IMGPath); Bufferedimage bufimg = null; String content = null; try {bufimg = imageio.read (ImageFile); QrCodEDeCoder decoder = new QrCodEDeCoder (); content = new String (decoder.decode (neuer twoodimensionCodeImage (bufimg)), "utf-8"); } catch (ioException e) {System.out.println ("Fehler:" + e.getMessage ()); E. printstacktrace (); } catch (decodingFailedException dfe) {System.out.println ("Fehler:" + dfe.getMessage ()); dfe.printstacktrace (); } Inhalt zurückgeben; } / ** * QR -Code analysieren (QRCode) * @param Eingangsstream * @return * / public String decoderQrCode (inputStream input) {bufferedImage bufimg = null; String content = null; try {bufimg = imageio.read (input); QrCodEDeCoder decoder = new QrCodEDeCoder (); content = new String (decoder.decode (neuer twoodimensionCodeImage (bufimg)), "utf-8"); } catch (ioException e) {System.out.println ("Fehler:" + e.getMessage ()); E. printstacktrace (); } catch (decodingFailedException dfe) {System.out.println ("Fehler:" + dfe.getMessage ()); dfe.printstacktrace (); } Inhalt zurückgeben; } public static void main (String [] args) {String imgpath = "g: /tddownload/michael_qrcode.png"; String cnodercontent = "Hallo groß, klein, Willkommen bei QRCode!" + "/nmyblog [http://sjsky.iteye.com]" + "/nemail [[email protected]]"; TwoodimensionCode Handler = new twoodimensionCode (); handler.encoderQRCode(encoderContent, imgPath, "png");// try {// OutputStream output = new FileOutputStream(imgPath);// handler.encoderQRCode(content, output);// } catch (Exception e) {// e.printStackTrace();// } System.out.println ("============= Encoder -Erfolg"); String decoderContent = Handler.DeCoderQrCode (IMGPath); System.out.println ("Das Parsing -Ergebnis ist wie folgt:"); System.out.println (decoderContent); System.out.println ("============ Decodierer Erfolg !!!"); }}TwoodimensionCodeImage Class: QR -Code -Bildobjekt Objekt
Paket QrCode; importieren java.awt.image.buffeedImage; import jp.sourceforge.qrcode.data.qrcodeImage; public class twodimensionCodeMage implementiert QrCodeImage {bufferedimage bufimg; public twoodimensionCodeImage (bufferedImage bufimg) {this.bufimg = bufimg; } @Override public int getheight () {return bufimg.getheight (); } @Override public int getPixel (int x, int y) {return bufimg.getRgb (x, y); } @Override public int getWidth () {return bufimg.getwidth (); }}Das obige ist eine Zusammenstellung der Informationen zur Erzeugung und Analyse von Java -QR -Codes. Wir werden es später weiter hinzufügen. Vielen Dank für Ihre Unterstützung für diese Website!