Java implementa a codificação e decodificação do código QR QRCODE
Algumas das principais bibliotecas de classes envolvidas são convenientes para todos o download:
Código LIB: QRCODE_SWETAKE.JAR (Introdução oficial ao site-http://www.swetake.com/qr/index-e.html)
Decode LIB: qrcode.jar (Introdução oficial ao site- http://sourceforge.jp/projects/qrcode/)
【1】 Codificação:
Código Java QRCodeEncoderHandler.java
pacote Michael.qrcode; importar java.awt.color; importar java.awt.graphics2d; importar java.awt.image.bufferiMage; importar java.io.file; importar javax.imageio.imageio; importar com.swetake.util.qrcode; /** * Gerador de código QR * @blog http://sjsky.iteye.com * @Author Michael */public class qrcodeEncoderHandler {/** * GERE o código qr (qrcode) imagem * @param content * @param img */public void Encoder. Qrcode (); qrcodeHandler.setqrcodeErrorCorrect ('m'); qrcodeHandler.SetQRCodeEncodemode ('B'); qrcodeHandler.setqrcodeversion (7); System.out.println (content); byte [] contentBytes = content.getbytes ("gb2312"); BufferImage bufimg = new bufferImage (140, 140, bufferImage.type_int_rgb); Graphics2d gs = bufimg.creategraphics (); gs.setbackground (cor.white); gs.clearrect (0, 0, 140, 140); // Defina a cor da imagem> GS.SetColor preto (color.black); // definido deslocamento para não definir pode causar erro de análise int pixoff = 2; // output Content> Código QR if (contentBytes.length> 0 && contentBytes.length <120) {boolean [] [] codeout = qrcodeHandler.calqrcode (contentBytes); para (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 comprimento =" + contentBytes.length + "não em [0,120]."); } gs.dispose (); bufimg.flush (); Arquivo imgfile = novo arquivo (imgpath); // gerar código QR qrcode Image Imageio.Write (bufimg, "png", imgfile); } catch (Exceção e) {e.printStackTrace (); }}/** * @param args os argumentos da linha de comando */public static void main (string [] args) {string imgpath = "d: /test/twocode/michael_qrcode.png"; String Content = "Hello Big, Small, Welcome to Qrcode!" + "/nmyblog [http://sjsky.iteye.com]" + "/nemail [[email protected]]" + "/ntwitter [@suncto]"; QrcodeEncoderHandler Handler = new QrcodeEncoderHandler (); Handler.Encoderqrcode (content, imgPath); System.out.println ("Sucesso do Encoder QRCode"); }}A imagem do código QR gerada após a execução é a seguinte:
No momento, você pode usar o software de digitalização de código QR do seu telefone celular (eu uso: Android Story QR Code) para testá -lo. As capturas de tela da identificação bem -sucedida são as seguintes:
Amigos que gostam pode baixá -lo e experimentá -lo, e fazem alguns cartões de visita ou coisas de que gostam. Obviamente, o Java também pode decodificar imagens de código QR, consulte o seguinte conteúdo sobre a decodificação.
【2】 Decodificação:
Código Java QRCodedecoderHandler.java
pacote Michael.qrcode; importar java.awt.image.bufferiMage; importar java.io.file; importar java.io.ioException; importar javax.imageio.imageio; importar jp.sourceforge.qrcode.qrcodedecoder; importar jp.sourceforge.qrcode.data.qrcodeImage; importar jp.sourceforge.qrcode.exception.DecodingFailedException; /** * @blog http://sjsky.iteye.com * @Author Michael */public class qrcodedecoderHandler {/** * decodificar código qr * @param imgpath * @return string */public string deCoderqrcode (string img) {// QRCode QRIGS; BufferImage bufimg = null; String decodedData = null; tente {bufimg = imageio.read (imagefile); Qrcodedecoder decodificador = new qrcodedecoder (); decodedData = new String (decodificador.Decode (novo j2Seimage (bufimg))); // tente {// System.out.println (new String (decodedData.getBytes ("gb2312"), // "gb2312")); //} catch (Exceção e) {// // TODO: lidar com exceção //}} catch (ioexception e) {System.out.println ("Error:" + E.getMessage ()); E.PrintStackTrace (); } catch (decodingFailedException dfe) {System.out.println ("Error:" + dfe.getMessage ()); dfe.printStackTrace (); } retornar decodedData; } / ** * @param args os argumentos da linha de comando * / 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 ("O resultado da análise é o seguinte:"); System.out.println (decodicontent); System.out.println ("============ Sucesso do decodificador !!!"); } classe j2Seimage implementa QRCodeImage {bufferImage bufimg; public j2Seimage (bufferImage 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); }}}Os resultados em execução são os seguintes (o conteúdo decodificado é consistente com o conteúdo inserido anteriormente):
Os resultados da análise são os seguintes:
Olá grande, pequeno, bem -vindo ao qrcode!
Myblog [http://sjsky.iteye.com]
E -mail [[email protected]]
Twitter [@SuTCO]
============ Sucesso do decodificador !!!
O exposto acima é a coleção da codificação e decodificação do código Java QR QRCode. Continuaremos a adicionar informações relevantes no futuro. Obrigado pelo seu apoio a este site!