Java implementa codificación y decodificación del código QR QRCode
Algunas de las bibliotecas de clase principal involucradas son convenientes para que todos los descarguen:
Código lib: qrcode_swetake.jar (Introducción al sitio web oficial-- http://www.swetake.com/qr/index-e.html)
Decode lib: qrcode.jar (Introducción oficial del sitio web-- http://sourceforge.jp/projects/qrcode/)
【1】 Codificación:
Código Java QRCodeenCoderHandler.java
Paquete Michael.Qrcode; import java.awt.color; import java.awt.graphics2d; import java.awt.image.bufferedImage; import java.io.file; import javax.imageio.imageio; import com.swetake.util.qrcode; /** * Generador de código QR * @Blog http://sjsky.iteye.com * @author Michael */public class QrCodeenCoderHandler {/** * Generar Qr Code (Qrcode) Image * @Param Content * @param imgpath */public Void encoderqrCode (string cadl Qrcode (); qrcodeHandler.setqrCodeErrorCorrect ('m'); qrcodeHandler.setqrCodeEncodeMode ('b'); qrcodeHandler.setqrCodeversion (7); System.out.println (contenido); 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); // establecer color de imagen> negro gs.setcolor (color.black); // Establecer el compensación para no establecer puede causar error de análisis int pixoff = 2; // Salida Contenido> Código QR if (ContentBytes.length> 0 && ContentBytes.length <120) {boolean [] [] codeOut = qrcodeHandler.calqrcode (contentBytes); for (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 longitud =" + contentBytes.length + "no en [0,120]."); } gs.dispose (); bufimg.flush (); Archivo imgfile = nuevo archivo (imgpath); // Generar el código QR QRCode Image ImageIO.Write (BufiMg, "PNG", IMGFile); } catch (Exception e) {E.PrintStackTrace (); }}/** * @param args los argumentos de la línea de comandos */public static void main (string [] args) {string imgpath = "d: /test/twocode/michael_qrcode.png"; String Content = "Hola grande, pequeño, ¡bienvenido a QRCode!" + "/nmyblog [http://sjsky.iteye.com]" + "/nemail [[email protected]]" + "/ntwitter [@suncho]"; QRCodeEncoderHandler Handler = new QrCodeEncoderHandler (); handler.encoderqrCode (contenido, imgpath); System.out.println ("Coder QRCode éxito"); }}La imagen del código QR generada después de ejecutar es la siguiente:
En este momento, puede usar el software de escaneo de código QR de su teléfono móvil (uso: código QR de Android Story) para probarlo. Las capturas de pantalla de la identificación exitosa son las siguientes:
Los amigos que les gusta pueden descargarlo y probarlo, y hacer algunas tarjetas de visita o cosas que les gustan. Por supuesto, Java también puede decodificar imágenes de código QR, consulte el siguiente contenido sobre decodificación.
【2】 decodificación:
Código Java QRCodeDecoderHandler.java
Paquete Michael.Qrcode; import java.awt.image.bufferedImage; import java.io.file; import 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 QrCodedEdecoderHandler {/** * Decode Qr Code * @param imgpath * @return String */public string decoderqrcode (string imgpath) {// qrcode qr código de código archivo imagen = nuevo archivo (nuevo archivo (nuevo archivo (nuevo archivo (nuevo archivo (nuevo archivo); BufferedImage bufiMg = nulo; Cadena decodeddata = null; intente {bufiMg = imageIO.read (ImageFile); QrCodEdecoder decoder = new QrCodeDeCoder (); decodeddata = new String (decoder.decode (new J2SeImage (bufimg))); // intenta {// system.out.println (nueva cadena (decodeddata.getbytes ("gb2312"), // "gb2312")); //} Catch (Exception e) {// // tODO: manejar excepción //}} catch (ioException e) {system.out.println ("Error:" + e.getMessage ()); E.PrintStackTrace (); } Catch (decodingfailedException dfe) {system.out.println ("error:" + dfe.getMessage ()); dfe.printstacktrace (); } return decodedData; } / ** * @param args los argumentos de la línea de comandos * / public static void main (string [] args) {QrCodeDeCoderHandler Handler = new QrCodeDeCoderHandler (); Cadena imgpath = "d: /test/twocode/michael_qrcode.png"; String decodercontent = handler.decoderqrcode (imgpath); System.out.println ("El resultado del análisis es el siguiente:"); System.out.println (decodercontent); System.out.println ("============ ¡éxito del decodificador!"); } La clase J2SEIMAGE implementa 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); }}}Los resultados en ejecución son los siguientes (el contenido decodificado es consistente con el contenido ingresado anteriormente):
Los resultados del análisis son los siguientes:
¡Hola, pequeño, pequeño, bienvenido a QRCode!
MyBlog [http://sjsky.iteye.com]
Correo electrónico [[email protected]]
Twitter [@suncho]
=========== ¡éxito del decodificador!
Lo anterior es la recopilación de la codificación y decodificación del código Java QR QRCode. Continuaremos agregando información relevante en el futuro. ¡Gracias por su apoyo para este sitio!