记录二维码生成
主要代码:
@RequestMapping(value = "/getqrcode", method = RequestMethod.POST)
public JSONObject getQrcode(@RequestBody JSONObject json) throws IOException {
String mesg = json.toString();
int width = 300;
int height = 300;
String format = "png";
try{
Map<EncodeHintType, Object> hints= new HashMap<EncodeHintType, Object>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
//hints.put(EncodeHintType.MARGIN, 1);
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); //容错率
BitMatrix bitMatrix = new MultiFormatWriter().encode(mesg, BarcodeFormat.QR_CODE, width, height,hints);
BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
ByteArrayOutputStream os = new ByteArrayOutputStream();
JPEGImageEncoder encoders = JPEGCodec.createJPEGEncoder(os);
encoders.encode(bufferedImage);
BASE64Encoder encoder = new BASE64Encoder();
String png_base64 = encoder.encodeBuffer(os.toByteArray()).trim();//转换成base64串
png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n
} catch (WriterException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonObject;
}
注:在解析img对象到byte[] 注意用JPEG 否则本地没问题部署到Linux 会报错(ImageIO无法初始化)
依赖:
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>