需要的jar包
<!--二维码-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
生成二维码的工具类
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
/**
* 、条形码工具类
*/
public abstract class QRUtil {
private static final int CODE_WIDTH = 400;
private static final int CODE_HEIGHT = 400;
private static final int FRONT_COLOR = 0x000000;
private static final int BACKGROUND_COLOR = 0xFFFFFF;
/**
*
* @param codeContent 扫描后得到的内容
* @param response
*/
public static void createCode(String codeContent, HttpServletResponse response){
try (OutputStream outputStream = response.getOutputStream()) {
createCodeToFile(codeContent, CODE_WIDTH, CODE_HEIGHT, outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 生成二维码
* @param codeContent 扫描后得到的内容
* @param width 二维码宽度
* @param height 二维码高度
* @param outputStream 流
*/
private static void createCodeToFile(String codeContent, int width, int height, OutputStream outputStream) {
try {
if (codeContent == null || "".equals(codeContent)) {
return;
}
codeContent = codeContent.trim();
Map<EncodeHintType, Object> hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
hints.put(EncodeHintType.MARGIN, 1);
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
BitMatrix bitMatrix = multiFormatWriter.encode(codeContent, BarcodeFormat.QR_CODE, width, height, hints);
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? FRONT_COLOR : BACKGROUND_COLOR);
}
}
ImageIO.write(bufferedImage, "png", outputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
}