今天跟大家分享一下,如何使用JAVA生成二维码,废话不多说,上图
第一步,添加项目所需的 maven依赖
会自动导入core-3.2.0.jar和javase-3.2.0.jar两个jar包
package com.zz.QRcode.utils;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
public class QRcodeUtil {
/**
* @param content 二维码内容
* @param width 二维码图片的宽度
* @param height 二维码图片的高度
* @param format 二维码图片的格式
* @param path 二维码写入的路径
*/
public static void createQRcode(String content,int width,int height,String format,String file){
Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
// 设置字符编码
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//创建二维码模型
try {
// 生成二维码
BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
MatrixToImageWriter.writeToPath(bitMatrix, format, new File(file).toPath());
} catch (IOException e) {
e.printStackTrace();
} catch (WriterException e) {
e.printStackTrace();
}
}
/**
* @param content 二维码内容
* @param format 二维码图片的格式
* @param path 二维码写入的路径
*/
public static void createQRcodeDefaultSize(String content,String format,String file){
createQRcode(content, 300, 300, format, file);
}
/**
* @param content 二维码内容
* @param path 二维码写入的路径
*/
public static void createPngQRcodeDefaultSize(String content,String file){
createQRcodeDefaultSize(content, "png", file);
}
/**
* @param content 二维码内容
* @param path 二维码写入的路径
* @param width 二维码图片的宽度
* @param height 二维码图片的高度
*/
public static void createPngQRcode(String content,String file,int width,int height){
createQRcode(content, width, height, "png", file);
}
}
这里使用的是MatrixToImageWriter类,该类由goole提供,可以直接使用
第三步,测试生成二维码
package com.zz.QRcode.test;
import com.zz.QRcode.utils.QRcodeUtil;
public class Test {
@org.junit.Test
public void test() {
String content = "http://urfunny.xyz";
String file = "F:/壁纸/test.png";
//使用默认大小的png格式生成二维码
QRcodeUtil.createPngQRcodeDefaultSize(content,file);
}
}
此时我们查看生成的二维码
第四步,用手机扫描二维码
第五步,使用JAVA解析二维码
在工具类中添加方法
/**
*
* @param file 二维码图片所在的路径
* @return 返回解析到的二维码内容
*/
public static String decodeQRcode(String file){
String content = null;
try {
//创建图片缓存流
BufferedImage image = ImageIO.read(new File(file));
LuminanceSource source = new BufferedImageLuminanceSource(image);
Binarizer binarizer = new HybridBinarizer(source);
BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
//设置解析提示
Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
//设置字符编码
hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
// 对图像进行解码
Result result = new MultiFormatReader().decode(binaryBitmap, hints);
content = result.getText();
} catch (IOException e) {
e.printStackTrace();
} catch (NotFoundException e) {
e.printStackTrace();
}
return content;
}
第六步,使用JAVA解析二维码
package com.zz.QRcode.test;
import com.zz.QRcode.utils.QRcodeUtil;
public class Test {
@org.junit.Test
public void test() {
String file = "F:/壁纸/test.png";
//使用java解析二维码
String content = QRcodeUtil.decodeQRcode(file);
System.out.println(content);
}
}
控制台打印结果