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);
    }

}
相关推荐
曹牧20 分钟前
文档格式:OFD
java
豆角焖肉1 小时前
Maven进阶与搭建私服
java·maven
大不点wow1 小时前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm
止语Lab1 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活1 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
噢,我明白了1 小时前
Java中日期和字符串的处理
java·开发语言·日期
程序员天天困1 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn1 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
dkbnull1 小时前
Spring Boot请求处理组件对比详解
java·spring boot
jun_bai1 小时前
Orthanc服务器使用java上传dicom影像文件
java·运维·服务器