Java实现二维码QRCode的编码和解码

周末试用下Android手机的二维码扫描软件,扫描了下火车票、名片等等,觉得非常不错很有意思的。当然Java也可以实现这些,现在就分享下如何简单用Java实现二维码中QRCode的编码和解码(可以手机扫描验证)。

涉及到的一些主要类库,方便大家下载:

  • 编码 lib:Qrcode_swetake.jar (官网介绍 — http://www.swetake.com/qr/index-e.html)
  • 解码 lib:qrcode.jar                 (官网介绍 — http://sourceforge.jp/projects/qrcode/)

QRcode的详细介绍可参考:http://www.qrcode.com/en

后来发现一个更好的条形码和二维码的开源软件(ZXing),详见:条形码/二维码之开源利器ZXing图文介绍

【一】、编码:

QRCodeEncoderHandler.java

运行后生成的二维码图片如下:

此时就可用手机的二维码扫描软件(本人用的:android 快拍二维码 )来测试下,识别成功的截图如下:

喜欢的朋友可以下载后试一试,做一些名片或者自己喜欢的东西。当然Java也可以对二维码图片解码,具体看下面关于解码的内容。

ps:有关上述代码中对输出内容限制的解释:由于各个版本、各个纠错等级的不同,实际容量是不一样的,上述限制只是为了演示简单实现控制而已。

【二】、解码:
QRCodeDecoderHandler.java

运行结果如下(解码出的内容和之前输入的内容一致 ):

解析结果如下:
Hello 大大、小小,welcome to QRCode!
Myblog [ http://sjsky.iteye.com ]
EMail [ sjsky007@gmail.com ]
Twitter [ @suncto ]
========decoder success!!!

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/enterprise-app/java-qrcode/

发表评论?

10 条评论。

  1. 你好。。。这个解析二维码图片 中文出乱码啊,楼主是怎么解决的啊

  2. 想請問版主
    解码:
    QRCodeDecoderHandler.java
    是否有介面

  3. 版主你好我在使用你的code時我發生這幾個問題可是我不會解決想請如你如何解決:
    BufferedImage bufImg = null;
    bufImg = ImageIO.read(imageFile);
    都有錯誤訊息
    還有就是我沒import這個import javax.imageio.ImageIO;

  4. 你好,最近在做名片的二维码,看了博主的文章很有帮助,但是有个问题想请教。编码时输出内容(第49行) contentBytes.length < 120 为什么一定要控制二维码输出的大小呢?
    事实上,我试了,如果增大限制的长度,而实际的长度大于120的话就会报错。如实际长度为139,java.lang.ArrayIndexOutOfBoundsException: 124。但是名片中如果加上公司的地址,大多的长度都会超过这个限制,请问下,可以增大这个二维码的内容长度吗?谢谢.

回复给 Michael ¬
取消回复


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">