二维码图片流转base64

@RequestMapping(value = "/weChatImage",method = RequestMethod.GET)
public Response weChatimage(@RequestParam(required=false) int width,@RequestParam(required=false) int height,@RequestParam(required = false) String redirect, HttpServletResponse response) throws Exception{

String code = java.util.UUID.randomUUID().toString();
String code_url = SystemProperties.getValue("ucenter.out.url")+"/weChat/scanCode?state="+code;
//String code_url = "http://localhost:8080/weChat/scanCode?state="+code;
Map<String,Object> map1 = new HashMap<>();
map1.put("redirect",redirect);
redis.opsForValue().set(code,JSON.toJSONString(map1),7,TimeUnit.DAYS);

if(width == 0){
width = 200;//宽度
}
if(height == 0){
height = 200;//高度
}

Map<EncodeHintType,Object> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");

//生成矩阵
BitMatrix bitMatrix = new MultiFormatWriter().encode(code_url, BarcodeFormat.QR_CODE, width, height, hints);

//字节数组输出流
ByteArrayOutputStream imageOut = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "png", imageOut);

//字节数组输入流
ByteArrayInputStream imageIn = new ByteArrayInputStream(imageOut.toByteArray());
BufferedImage bImage = ImageIO.read(imageIn);

ByteArrayOutputStream bs =new ByteArrayOutputStream();
ImageIO.write(bImage, "png", bs);

String base64 = "data:image/png;base64,"+Base64.byteArrayToBase64(bs.toByteArray());
Map<String,Object> map = new HashMap<>();
map.put("base64",base64);
map.put("url",code_url);
map.put("code",code);

return Response.newInstance().setStatus(Response.SUCCESS).setBody(map);
}

转载于:https://www.cnblogs.com/zjdeblog/p/10001408.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值