SpringBoot整合二维码

下载依赖

        <!-- ZXing Core 依赖 -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.4.1</version> <!-- 或者更高版本 -->
            <!-- 这个依赖包含了 ZXing 核心功能,包括条形码和二维码的编码和解码算法 -->
        </dependency>

        <!-- ZXing JavaSE 依赖 -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.4.1</version> <!-- 或者更高版本 -->
            <!-- 这个依赖包含了 ZXing 在 Java SE 环境下的实现,包括图像处理和图形用户界面相关的类 -->
        </dependency>

配置工具类

@Component
public class CodeUtils {

 /**
  * 生成永久二维码
  *
  * @param text     要编码为二维码的文本内容
  * @param width    二维码的宽度
  * @param height   二维码的高度
  * @param filePath 生成的二维码图片保存的路径
  */
 public void generateQRCodeImage(String text, int width, int height, String filePath) {
  try {
   // 创建 QRCodeWriter 实例
   QRCodeWriter qrCodeWriter = new QRCodeWriter();

   // 设置编码提示信息,这里设置错误校正级别为 L
   Map<EncodeHintType, Object> hints = new HashMap<>();
   hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);

   // 编码文本内容为 BitMatrix
   BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints);

   // 创建 BufferedImage 对象,用于绘制二维码图像
   BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

   // 获取 Graphics2D 对象,用于绘图
   Graphics2D graphics = (Graphics2D) bufferedImage.getGraphics();

   // 设置背景颜色为白色
   graphics.setColor(Color.WHITE);
   graphics.fillRect(0, 0, width, height);

   // 设置前景颜色为黑色
   graphics.setColor(Color.BLACK);

   // 根据 BitMatrix 绘制二维码
   for (int i = 0; i < width; i++) {
    for (int j = 0; j < height; j++) {
     if (bitMatrix.get(i, j)) {
      // 如果当前位为 true,则绘制一个黑色的小方块
      graphics.fillRect(i, j, 1, 1);
     }
    }
   }

   // 将生成的二维码图像写入指定的文件路径
   ImageIO.write(bufferedImage, "png", new File(filePath));

   // 关闭 Graphics2D 对象
   graphics.dispose();

  } catch (WriterException | IOException e) {
   // 捕获并打印异常信息
   e.printStackTrace();
  }
 }
}

添加配置文件

#生成二维码
backend:
  #这里是二维码图片的保存路径
  Path: 'D:\\code\\'

添加业务层

// 引入Lombok的@Slf4j注解,自动生成日志对象
@Slf4j
// 允许跨域请求,使得前端应用可以从不同的域名访问后端API
@CrossOrigin
// 标记该类为Spring MVC的控制器,用于处理HTTP请求
@RestController
// 设置该控制器的请求映射基础路径
@RequestMapping("/code")
public class CodeController {


 // 通过@Autowired注解自动装配QRCodeService的实现类
 @Autowired
 private CodeServer codeServer;

 // 定义一个GET请求的处理方法,映射路径为"/api/common/QRCode"
 @GetMapping("/QRCode")
 public String save() {
  // 调用QRCodeService中的getQRCode方法生成二维码
  codeServer.getQRCode();

  // 返回字符串"生成成功"作为HTTP响应体
  return "生成成功";
 }
}



public interface CodeServer {

 /**
  * 获取二维码
  */
 void getQRCode();
}




@Service
public class CodeServerImpl implements CodeServer {

 // 通过@Autowired自动装配QRCodeGeneratorUtils实例,该工具类用于生成二维码
 @Autowired
 private CodeUtils codeUtils;

 // 使用@Value注解从配置文件中读取后台路径,并赋值给path变量
 @Value("${backend.Path}")
 private String path;


 @Override
 public void getQRCode() {

  try {
   // 定义二维码图片的保存路径,使用了前面从配置文件中读取到的路径
   String QR_CODE_IMAGE_PATH = path + "MyQRCode.png";

   // 定义要编码为二维码的文本内容,这里是一个示例URL
   String QR_CODE_TEXT = "https://www.baidu.com";

   // 调用qrCodeGeneratorUtils工具类的generateQRCodeImage方法生成二维码图片
   // 参数分别为:要编码的文本、二维码宽度、二维码高度、二维码图片的保存路径
   codeUtils.generateQRCodeImage(QR_CODE_TEXT, 350, 350, QR_CODE_IMAGE_PATH);
  } catch (Exception e) {
   // 捕获异常,打印堆栈信息。在实际应用中,可能需要更详细的错误处理逻辑
   e.printStackTrace();
  }

 }
}

访问接口 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值