二维条码/二维码(2-dimensional bar code,QRCode)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。
Java生成QRCode
Zebra Crossing(ZXing)是一个可以在大多数平台(Android、JavaSE、iPhone、RIM、Symbian)中用来生成、解析QR码的开源库。而QRGen是在ZXing基础上开发,这个库使得利用Java生成QR码变为小菜一碟。它需要依赖ZXing,所以生成图案时你同时需要ZXing和QRGen的jar包。
在pom.xml添加qrcode的依赖:
<dependency>
<groupId>net.glxn</groupId>
<artifactId>qrgen</artifactId>
<version>1.4</version>
</dependency>
然后在Maven Dependencies中会自动下载如下3个jar包:
qrgen-1.4.jar
javase-3.0.0.jar
core-3.0.0.jar
接下来就是写一段Java程序来生成QRCode了,大致说来就是设置好二维码中的内容,然后调用qrgen的API来生成image/png格式的内容,既可以保存为图片文件,还可以在网页上直接显示该QRCode。
Java代码如下所示,QRCode的内容是一个Linux公社的链接:
package com.test.qrcode;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.image.ImageType;
public class QRCodeService
{
public static void main(String[] args)
{
String qrcodeContent = "http://www.linuxidc.com/";
ByteArrayOutputStream out = QRCode.from(qrcodeContent).to(ImageType.PNG).stream();
try
{
FileOutputStream fout = new FileOutputStream(new File("D:/Download/QR_Code.jpg"));
fout.write(out.toByteArray());
fout.flush();
fout.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
打开保存的图片文件,就可以看到生成的Linux公社链接的二维码了:
至此,一个简单的Java生成二维码的样例就演示完了,可以借助qrgen的API的强大功能,实现我们特定的需求,例如:在网页中动态为用户生成二维码等。