<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.1</version>
</dependency>
package com.test;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.sun.org.apache.xml.internal.security.utils.Base64;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
//Component注解添加,其余需要使用的类就可以使用@Autowired对工具类自动装配
@Component
public class QRCodeUtil {
/**
* 生成Base64 二维码
*/
public String crateQRCode(String content) throws IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
QRCodeWriter writer = new QRCodeWriter();
BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, 200, 200);
BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
ImageIO.write(bufferedImage, "png", os);
//添加图片格式标识
return new String("data:image/png;base64," + Base64.encode(os.toByteArray()));
} catch (Exception e) {
e.printStackTrace();
} finally {
os.close();
}
return null;
}
public static void main(String[] args) throws Exception {
//String qrCode = new QRCodeUtil().crateQRCode(new String("测试生成二维码".getBytes(), "ISO-8859-1"));
//String qrCode = new QRCodeUtil().crateQRCode("https://www.baidu.com");
//System.out.println(qrCode);
//1.二维码中的信息
String content = "https://www.baidu.com";
//2.通过zxing生成二维码(保存到本地图片,支持以data url的形式体现)
QRCodeWriter writer = new QRCodeWriter();
//参数1:二维码信息;参数2:图片类型;参数3:宽度;参数4:长度
BitMatrix bt = writer.encode(content, BarcodeFormat.QR_CODE, 200, 200);
//保存二维码到本地
Path path = new File("C:\\Users\\admin\\Desktop\\test.png").toPath();
MatrixToImageWriter.writeToPath(bt,"png",path);
}
}