• java 生成二维码


    生成二维码的工具类如下:

    /**
    * QrCodeUtil.java
    * com.juyo.visa.common.util
    * Copyright (c) 2017,
    */

    package com.btzh.mis.dep.data.center.util;

    import com.google.zxing.*;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.common.HybridBinarizer;
    import lombok.Data;

    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.nio.file.FileSystems;
    import java.nio.file.Path;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.UUID;

    /**
    * TODO(这里用一句话描述这个类的作用)
    * <p>
    * TODO(这里描述这个类补充说明 – 可选)
    *
    * @author
    * @Date 2017年12月9日
    */
    @Data
    public class QrCodeUtil {

    private String fileContextPath;

    /**
    * 得到32位的uuid
    * @return
    */
    public static String getUUID32(){
    return UUID.randomUUID().toString().replace("-", "").toLowerCase();
    }
    /**
    * 生成二维码
    * <p>
    * TODO(这里描述这个方法详情– 可选)
    *
    * @param content 二维码的内容
    * @param filePath临时文件的路径
    */
    public void encodeQrCode(String content, String filePath) {
    try {
    //需要创建一个临时文件,为了防止出现并发问题,现把二维码文件名用16为的UUID来命名
    String fileName = getUUID32() + ".png";
    int width = 300; //二维码图像宽度
    int height = 300; // 二维码图像高度
    String format = "png";// 图像类型
    Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
    hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵
    Path path = FileSystems.getDefault().getPath(filePath, fileName);
    //由于生成二维码的方法没有返回值,现将二维码临时路径进行保存
    this.fileContextPath = path.toString();
    MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像
    //System.out.println("输出成功.");
    } catch (Exception e) {
    // TODO: handle exception
    }
    }
    /**
    * 解析二维码
    */
    public void decodeQrCode(String filePath) {
    BufferedImage image;
    try {
    image = ImageIO.read(new File(filePath));
    LuminanceSource source = new BufferedImageLuminanceSource(image);
    Binarizer binarizer = new HybridBinarizer(source);
    BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
    Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
    hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
    Result result = new MultiFormatReader().decode(binaryBitmap, hints);// 对图像进行解码
    System.out.println("图片中内容: ");
    System.out.println("author: " + result.getText());
    System.out.println("图片中格式: ");
    System.out.println("encode: " + result.getBarcodeFormat());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    2.测试

    public static void main(String [] args){
    QrCodeUtil qrCodeUtil = new QrCodeUtil();
    //生成二维码的临时路径
    String filepath = "D://pdfFile";
    //生成二维码
    qrCodeUtil.encodeQrCode("这里是二维码的内容", filepath);
    //获取二维码临时文件的路径
    String fileContextPath = qrCodeUtil.getFileContextPath();
    //获取到二维码文件
    File file = new File(fileContextPath);
    System.out.println("生成了。。。");
    }
    /**
    * QrCodeUtil.java
    * com.juyo.visa.common.util
    * Copyright (c) 2017,
    */

    package com.btzh.mis.dep.data.center.util;

    import com.google.zxing.*;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.common.HybridBinarizer;
    import lombok.Data;

    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.nio.file.FileSystems;
    import java.nio.file.Path;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.UUID;

    /**
    * TODO(这里用一句话描述这个类的作用)
    * <p>
    * TODO(这里描述这个类补充说明 – 可选)
    *
    * @author
    * @Date 2017年12月9日
    */
    @Data
    public class QrCodeUtil {

    private String fileContextPath;

    /**
    * 得到32位的uuid
    * @return
    */
    public static String getUUID32(){
    return UUID.randomUUID().toString().replace("-", "").toLowerCase();
    }
    /**
    * 生成二维码
    * <p>
    * TODO(这里描述这个方法详情– 可选)
    *
    * @param content 二维码的内容
    * @param filePath临时文件的路径
    */
    public void encodeQrCode(String content, String filePath) {
    try {
    //需要创建一个临时文件,为了防止出现并发问题,现把二维码文件名用16为的UUID来命名
    String fileName = getUUID32() + ".png";
    int width = 300; //二维码图像宽度
    int height = 300; // 二维码图像高度
    String format = "png";// 图像类型
    Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
    hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵
    Path path = FileSystems.getDefault().getPath(filePath, fileName);
    //由于生成二维码的方法没有返回值,现将二维码临时路径进行保存
    this.fileContextPath = path.toString();
    MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像
    //System.out.println("输出成功.");
    } catch (Exception e) {
    // TODO: handle exception
    }
    }
    /**
    * 解析二维码
    */
    public void decodeQrCode(String filePath) {
    BufferedImage image;
    try {
    image = ImageIO.read(new File(filePath));
    LuminanceSource source = new BufferedImageLuminanceSource(image);
    Binarizer binarizer = new HybridBinarizer(source);
    BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
    Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
    hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
    Result result = new MultiFormatReader().decode(binaryBitmap, hints);// 对图像进行解码
    System.out.println("图片中内容: ");
    System.out.println("author: " + result.getText());
    System.out.println("图片中格式: ");
    System.out.println("encode: " + result.getBarcodeFormat());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
  • 相关阅读:
    Vue.js学习笔记(8)拖放
    Vue.js学习笔记(7)组件详解
    使用了与请求的协议不兼容的地址的解决办法
    修改machine.config遇到System.Net.ServicePointManager 的类型初始值设定项引发异常
    未找到路径“/Agent/SissQrTemplate/AddN”的控制器或该控制器未实现 IController。
    C# .NET 2.0 判断当前程序进程是否为64位运行时 (x64)
    荣耀9开启虚拟按键
    C# .NET 4.5 将多个文件添加到压缩包中
    开IE时 暴卡
    VMware Workstation 安装 mac OS 时遇到 不可恢复错误: (vcpu-0)
  • 原文地址:https://www.cnblogs.com/wjxbk/p/9882267.html
Copyright © 2020-2023  润新知