zoukankan      html  css  js  c++  java
  • 实现Java生成二维码功能

    java实现二维码

    参考:https://mp.weixin.qq.com/s/RzaU32wbWXk66wfJcN8YvA

    文章目录

    • 效果图
    • 步骤
      • maven依赖
      • 工具类
      • service
    • 扩展
      • 局域网调试
      • 线上调试

    效果图

    步骤

    maven依赖

    <!--生成二维码-->
    <dependency>
      <groupId>com.google.zxing</groupId>
      <artifactId>javase</artifactId>
      <version>3.3.0</version>
    </dependency>

    工具类

    package com.bennyrhys.mall.util;
    
    import com.google.zxing.BarcodeFormat;
    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 java.io.IOException;
    import java.nio.file.FileSystems;
    import java.nio.file.Path;
    
    /**
     * 描述:     生成二维码工具
     */
    public class QRCodeGenerator {
    
    
        public static void generateQRCodeImage(String text, int width, int height, String filePath)
                throws WriterException, IOException {
            QRCodeWriter qrCodeWriter = new QRCodeWriter();
            BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
            Path path = FileSystems.getDefault().getPath(filePath);
            MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
        }
    
        public static void main(String[] args) {
            try {
                generateQRCodeImage("Hello World", 350, 350, "E:/JAVA/mall/src/main/resources/images/QRTest.png");
            } catch (WriterException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    service

     /**
         * 生成二维码
         * 图片可解析出访问的支付对应订单号的支付连接
         * @param orderNo 订单号
         * @return 返回图片地址
         */
        @Override
        public String qrcode(String orderNo) {
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
    
            String address = ip + ":" + request.getLocalPort();
            String payUrl = "http://" + address + "/pay?orderNo=" + orderNo;
            try {
                QRCodeGenerator.generateQRCodeImage(payUrl, 350, 350, Constant.FILE_UPLOAD_PATH + orderNo + ".png");
            } catch (WriterException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            String pngAddress = "http://" + address + "/images-dev/" + orderNo + ".png";
            return pngAddress;
        }

    扩展

    线上调试

    切换ip

    # 指定IP(防止ip转发获取的是内网ip) 
    file.upload.ip=127.0.0.1
  • 相关阅读:
    向net core 3.0进击——多平台项目发布与部署
    Linux配置部署_新手向(五)——Docker的安装与使用
    Ubuntu 18.04使用OpenSSL自签证书(证书支持多IP及多域名,谷歌浏览器无警告)
    学习makefile的一个工程示例
    Centos7下设置ceph 12.2.1 (luminous)dashboard UI监控功能
    一个小例子学习makefile
    Centos7下部署ceph 12.2.1 (luminous)集群及RBD使用
    VMware Centos7 桥接 DHCP无法获得IP
    VMware Centos7 NAT 无法上网的解决方法
    jerasure 2.0译文
  • 原文地址:https://www.cnblogs.com/konglxblog/p/15240554.html
Copyright © 2011-2022 走看看