spring boot 通过zxing生成二维码

Spring Boot是一个基于Spring框架的快速开发、便捷部署的微服务框架。而ZXing是一个功能强大的开源库,用于生成和解析二维码。在Spring Boot应用中,您可以整合ZXing库来方便地生成二维码。

接下来,创建一个Spring Boot服务,并编写一个控制器类来生成二维码。以下是一个简单的例子:

java 复制代码
@RestController
public class QrController {

    @Resource
    private CouponApi couponApi;


    @GetMapping("/qr")
    public ResponseEntity<byte[]> getImageData(CouponRequest request) throws IOException, WriterException {

        ResponseEntity<byte[]> result=new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);

        ResponseObject<CouponResponse> res = couponApi.view(request);
        if (res.getCode()!=200){
            return result;
        }

        Map<EncodeHintType, Object> hints = new HashMap<>();
        hints.put(EncodeHintType.MARGIN,1);
        QRCodeWriter qrCodeWriter = new QRCodeWriter();
        String data=String.format("http://www.niubaite.com/check?id=%d&code=%s",res.getData().getId(),res.getData().getCouponCode());
        BitMatrix bitMatrix = qrCodeWriter.encode(data, BarcodeFormat.QR_CODE, 300, 300, hints);

        BufferedImage bufferedImage = new BufferedImage(bitMatrix.getWidth(), bitMatrix.getHeight(), BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < bitMatrix.getWidth(); x++) {
            for (int y = 0; y < bitMatrix.getHeight(); y++) {
                bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
            }
        }
        ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
        ImageIO.write(bufferedImage, "png", outputStream);
        byte[] imageData =outputStream.toByteArray();

        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "image/png"); // 设置内容类型为图像

        return new ResponseEntity<>(imageData, headers, HttpStatus.OK);
    }

}
相关推荐
IT_陈寒11 分钟前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
晨星shine1 小时前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#
蝎子莱莱爱打怪1 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
倚栏听风雨2 小时前
【ES避坑指南】明明存的是 "CodingAddress",为什么 term 查询死活查不到?彻底搞懂 text 和 keyword
后端
程序员爱钓鱼2 小时前
Go 操作 Windows COM 自动化实战:深入解析 go-ole
后端·go·排序算法
回家路上绕了弯2 小时前
深入解析Agent Subagent架构:原理、协同逻辑与实战落地指南
分布式·后端
子玖2 小时前
实现微信扫码注册登录-基于参数二维码
后端·微信·go
IT_陈寒2 小时前
JavaScript代码效率提升50%?这5个优化技巧你必须知道!
前端·人工智能·后端
IT_陈寒2 小时前
Java开发必知的5个性能优化黑科技,提升50%效率不是梦!
前端·人工智能·后端
东风t西瓜2 小时前
飞书项目与多维表格双向同步
后端