内容简介:本文介绍如何使用Google提供的ZXing库,实现在Java程序中将URL生成为二维码图像从而令设备能够通过扫码访问。
1,引入资源:
对于maven项目而言,直接在pom.xml中的<dependencies>标签内引入下列资源:
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
对于普通java项目而言,则需手动下载相应的jar包(GitHub上的发行版地址):https://github.com/zxing/zxing/releases
最终引入效果如图所示:
2,编写代码
2.1,创建一个二维码生成工具(其中的功能详见代码注释):
package kohgylw.qr_code_quickstart.util;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
/**
*
* <h2>二维码生成工具</h2>
* <p>该工具用于根据链接生成一个二维码,使得设备扫码后可以访问这一链接。详见方法注释。</p>
* @author 青阳龙野(kohgylw)
* @version 1.0
*/
public class QRCodeUtil {
private static int width = 500;// 设定二维码的宽度
private static int height = 500;// 设定二维码的高度
private static String format = "png";// 设定二维码的图片格式
/**
*
* <h2>由指定链接生成二维码</h2>
* <p>根据传入的链接,在指定文件夹内生成指定名称的二维码文件(png格式)。</p>
* @author 青阳龙野(kohgylw)
* @param url java.lang.String 要编入二维码的URL
* @param dir java.lang.String 存储文件夹名(必须存在)
* @param name java.lang.String 存储文件名
*/
public static void createQRCode(String url, String dir, String name) throws IOException {
//对二维码进行必要的设定
Map<EncodeHintType, Object> hints = new HashMap<>();
//设定内容的编码格式
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//设定图像的错误校正程度:
//M - ~15%
//L - ~7%
//H - ~30%
//Q - ~25%
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
//设定图像外边距(像素)
hints.put(EncodeHintType.MARGIN, 2);
try {
//进行编码并获得一个bit封装对象
BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height, hints);
Path file = new File(dir, name + ".png").toPath();
//使用默认设置、将bit封装对象以指定的图像格式、写入至指定文件中
MatrixToImageWriter.writeToPath(bitMatrix, format, file);
//至此,一个二维码图像就生成完毕了,或者也可以使用下面的方法将其写出至输出流中
//MatrixToImageWriter.writeToStream(matrix, fileName, stream);
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码均经过检查,不存在其他自定义的工具类,能够直接运行使用。
2.2,接下来,编写一个主类进行测试
测试内容:将百度的URL地址生成一个二维码并存放在项目中的“output”文件夹内,二维码图像的文件名为“baidu.png”。
测试代码:
package kohgylw.qr_code_quickstart.mc;
import java.io.IOException;
import kohgylw.qr_code_quickstart.util.QRCodeUtil;
/**
*
* <h2>快速开始:使用zxing生成二维吗</h2>
* <p>该示例用于展示如何使用google的zxing库将一个URL生成二维码,从而实现扫码访问。</p>
* @author 青阳龙野(kohgylw)
* @version 1.0
*/
public class MC {
public static void main(String[] args) {
String url="https://www.baidu.com/";//要生成二维码的链接
String dir="output";//输出的文件夹
String name="baidu";//输出的文件名
try {
QRCodeUtil.createQRCode(url, dir, name);//调用工具类中的方法进行生成
} catch (IOException e) {
e.printStackTrace();
}
}
}
执行上述代码后,会在output内得到生成的结果:
使用“微信”对其进行扫码后,即可访问至百度:
3,总结
以上便是使用ZXing生成二维码的全部内容,由此还可以实现更加高级的功能(例如扫码下载等),这就要看使用者的想象力了。除此以外,ZXing库还可以识别二维码,从而实现应用内的扫码交互(比如扫码下单等),在此不做赘述。
以上,转发请注明出处。