From 70e0721d0ca6a552bcadc45527c2913b69829c29 Mon Sep 17 00:00:00 2001 From: 19173159168 Date: Fri, 5 Sep 2025 22:37:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 ++++ .../user/controller/QrCodeController.java | 56 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/main/java/com/sczx/user/controller/QrCodeController.java diff --git a/pom.xml b/pom.xml index 4b4e4a3..d155fa1 100644 --- a/pom.xml +++ b/pom.xml @@ -239,6 +239,17 @@ alipay-sdk-java 4.40.427.ALL + + + com.google.zxing + core + 3.4.1 + + + com.google.zxing + javase + 3.4.1 + diff --git a/src/main/java/com/sczx/user/controller/QrCodeController.java b/src/main/java/com/sczx/user/controller/QrCodeController.java new file mode 100644 index 0000000..3b7be7a --- /dev/null +++ b/src/main/java/com/sczx/user/controller/QrCodeController.java @@ -0,0 +1,56 @@ +package com.sczx.user.controller; + + +import com.ruoyi.common.core.domain.AjaxResult; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; +import org.springframework.web.bind.annotation.*; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; +import com.sczx.user.common.Result; +/** + * 二维码生成控制器 + */ +@RestController +@RequestMapping("/qrcode") +public class QrCodeController { + + /** + * 生成二维码并返回Base64编码 + * + * @return 包含Base64编码的二维码图片 + */ + @PostMapping("/generateOrderCarChangeBase64") + public Result generateOrderCarChangeQrCodeBase64(@RequestParam(value = "qrCodeStr", required = true) String qrCodeStr) { + try { + + // 设置二维码参数 + Map hints = new HashMap<>(); + hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); + hints.put(EncodeHintType.MARGIN, 1); + + // 生成二维码 + QRCodeWriter qrCodeWriter = new QRCodeWriter(); + BitMatrix bitMatrix = qrCodeWriter.encode(qrCodeStr.toString(), BarcodeFormat.QR_CODE, 300, 300, hints); + + // 将二维码转换为Base64编码 + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream); + byte[] qrCodeBytes = outputStream.toByteArray(); + String base64Image = Base64.getEncoder().encodeToString(qrCodeBytes); + + // 返回Base64编码的图片数据 + return Result.ok(base64Image); + } catch (WriterException | IOException e) { + return Result.fail("99999","二维码生成失败"); + } + } +}