一、引入坐标
<!-- 二维码 -->
<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>
二、 创建二维码
①第一种方式(保存在本地)
@RunWith(SpringRunner.class)
@SpringBootTest
public class SystemApplicationTest {
@Test
public void QRCodeTest() throws Exception {
//1.二维码中的信息
//2.通过zxing生成二维码(保存在本地,支持dataurl的形式体现)
//创建QRCodeWriter对象
//基本配置
/**
* 1.二维码信息
* 2.图片类型
* 3.宽度
* 4.长度
*/
//保存在本地
String content = "http://itcast.cn";
QRCodeWriter writer = new QRCodeWriter();
BitMatrix encode = writer.encode(content, BarcodeFormat.QR_CODE, 200, 200);
//借助他特有的工具类去保存打本地
/**
* 1.BitMatrix对象
* 2.图片类型
* 3.path对象
*/
Path path = new File("D:\\sczk\\test.png").toPath();
MatrixToImageWriter.writeToPath(encode,"png",path);
}
}
②第二种方式(data url)
package com.ihrm.system;
import com.baidu.aip.util.Base64Util;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.nio.file.Path;
import static org.junit.Assert.*;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SystemApplicationTest {
@Test
public void QRCodeTest() throws Exception {
//1.二维码中的信息
//2.通过zxing生成二维码(保存在本地,支持dataurl的形式体现)
//创建QRCodeWriter对象
//基本配置
/**
* 1.二维码信息
* 2.图片类型
* 3.宽度
* 4.长度
*/
//保存dataurl的形式
String content = "http://itcast.cn";
QRCodeWriter writer = new QRCodeWriter();
BitMatrix bt = writer.encode(content, BarcodeFormat.QR_CODE, 200, 200);
//创建byteArrayOutputStream
ByteArrayOutputStream os = new ByteArrayOutputStream();
//将二维码数据以byte数组的形式保存到byteArrayOutputStream
/**
* 1.image对象
* 2.图片格式
* 3.outputstream
*/
BufferedImage image = MatrixToImageWriter.toBufferedImage(bt);
ImageIO.write(image,"png",os);
//对byte数组进行base64处理
String encode = Base64Util.encode(os.toByteArray());
//想要在浏览器展示Base64,要加上头信息
System.out.println(new String("data:image/png;base64,"+encode));
}
}