Javaは、QRコードQRcodeのエンコードとデコードを実装します
関係するメインクラスライブラリの一部は、誰もがダウンロードするのに便利です。
コードlib:qrcode_swetake.jar(公式ウェブサイトの紹介 - http://www.swetake.com/qr/index-e.html)
decode lib:qrcode.jar(公式ウェブサイトの紹介 - http://sourceforge.jp/projects/qrcode/)
【1】コーディング:
Java Code QRCodeEncoderHandler.java
パッケージmichael.qrcode; java.awt.colorをインポートします。 java.awt.graphics2dをインポートします。 java.awt.image.bufferedimageをインポートします。 java.io.fileをインポートします。 javax.imageio.imageioをインポートします。 com.swetake.util.qrcodeをインポートします。 /** * QRコードジェネレーター * @blog http://sjsky.iteye.com * @author michael */public class qrcodeencoderhandler {/** * @param content * @param imgpath */public void encoderqrcode(string imgpath) qrcode(); qrcodehandler.setqrcodeerrorcorrect( 'm'); qrcodehandler.setqrcodeencodemode( 'b'); qrcodehandler.setqrcodeversion(7); System.out.println(content); 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); //イメージカラーを設定>ブラックgs.setcolor(color.black); //設定しないオフセットを設定することは、解析エラーを引き起こす可能性がありますint pixoff = 2; // output content> 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 lengtes =" + contentbytes.length + "not in [0,120]。"); } gs.dispose(); bufimg.flush();ファイルimgfile = new file(imgpath); // QRコードqrcode imageio.write(bufimg、 "png"、imgfile)を生成します。 } catch(Exception e){e.printstacktrace(); }}/** * @param argsコマンドライン引数 */public static void main(string [] args){string imgpath = "d:/test/twocode/michael_qrcode.png";文字列content = "こんにちは、小さい、qrcodeへようこそ!" + "/nmyblog [http://sjsky.iteye.com]" + "/nemail [[email protected]]" + "/ntwitter [@suncto]"; qrcodeencoderhandler handler = new qrcodeencoderhandler(); Handler.EncoderQRCode(content、imgpath); system.out.println( "encoder qrcode success"); }}実行後に生成されたQRコード画像は次のとおりです。
現時点では、携帯電話でQRコードスキャンソフトウェア(Android Story QRコードを使用しています)を使用してテストできます。成功した識別のスクリーンショットは次のとおりです。
それが好きな友達はそれをダウンロードして試してみて、好きな名刺や好きなものを作ることができます。もちろん、JavaはQRコード画像をデコードすることもできます。デコードに関する次のコンテンツをご覧ください。
【2】デコード:
Java Code qrcodedecoderhandler.java
パッケージmichael.qrcode; java.awt.image.bufferedimageをインポートします。 java.io.fileをインポートします。 java.io.ioexceptionをインポートします。 javax.imageio.imageioをインポートします。 jp.sourceforge.qrcode.qrcodedeCoderをインポートします。 jp.sourceforge.qrcode.data.qrcodeimageをインポートします。 jp.sourceforge.qrcode.exception.decodingfailedexceptionをインポートします。 /** * @blog http://sjsky.iteye.com * @author michael */public class qrcodedecoderhandler {/** * decode qr code * @param imgpath * @return string */public string decoderqrcode(string imgpath){// qrcode qr code file imagle imagle = emaglefile = file(imgpath); bufferedimage bufimg = null;文字列decodedData = null; try {bufimg = imageio.read(imageFile); QRCODEDECODER DECODER = new qrcodedeCoder(); decodedData = new String(decoder.decode(new J2Seimage(bufimg))); // try {// System.out.println(new String(decodedData.getBytes( "gb2312")、// "gb2312")); //} catch(Exception e){// // todo:handle例外//}} catch(ioexception e){system.out.println( "error:" + e.getmessage()); e.printstacktrace(); } catch(decodingfailedexception dfe){system.out.println( "error:" + dfe.getmessage()); dfe.printstacktrace(); } decodedDataを返します。 } / ** * @param argsコマンドライン引数 * / public static void main(string [] args){qrcodedecoderhandler handler = new qrcodedecoderhandler();文字列imgpath = "d:/test/twocode/michael_qrcode.png"; string decodercontent = handler.decoderqrcode(imgpath); System.out.println( "分析結果は次のとおりです。"); System.out.println(decodercontent); System.out.println( "======================== !!!"); } class j2seimageはqrcodeimage {bufferedimage bufimg; public j2seimage(bufferedimage bufimg){this.bufimg = bufimg; } public int getWidth(){return bufimg.getWidth(); } public int getheight(){return bufimg.getheigh(); } public int getPixel(int x、int y){return bufimg.getrgb(x、y); }}}実行中の結果は次のとおりです(デコードされたコンテンツは、以前に入力されたコンテンツと一致しています):
分析結果は次のとおりです。
こんにちはビッグ、小さい、QRCodeへようこそ!
myblog [http://sjsky.iteye.com]
電子メール[[email protected]]
Twitter [@suncto]
===========デコーダーの成功!!!
上記は、Java QRコードQRcodeのエンコードとデコードのコレクションです。今後も関連情報を追加し続けます。このサイトへのご支援ありがとうございます!