• 二维码生成和读取


    public class Test {
        public static void main(String[] strings) {
            Test test = new Test();
            test.CreateQrCodevoid("dsc", "D:/", "12306bypass");
            test.ReadQrCode("D:/12306bypass/1546931302959_423.png");
        }
    
        /**
         * 生成二维码
         * @param content 内容
         * @param filePath 生成的二维码存放的位置
         */
        public String CreateQrCodevoid(String content, String rootPath, String filePath) {
            int width = 300;
            int height = 300;
            String format = "png";
            //定义二维码的参数
            HashMap map = new HashMap();
            //设置编码
            map.put(EncodeHintType.CHARACTER_SET, "utf-8");
            //设置纠错等级
            map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
            map.put(EncodeHintType.MARGIN, 2);
            String fileName = null;
            try {
                //生成二维码
                BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height);
                //判断文件夹是否存在,不存在则创建
                String fullPath = rootPath+filePath;
                File file1 = new File(fullPath);
                if(!file1 .exists()  && !file1 .isDirectory()){
                    file1 .mkdirs();
                }
                //新的文件名
                fileName = content + System.currentTimeMillis()+"_"+new Random().nextInt(1000)+".png";
                //包含文件名的全路径
                String fileFolder = fullPath + "/" +fileName;
                Path file = new File(fileFolder).toPath();
                MatrixToImageWriter.writeToPath(bitMatrix, format, file);
            } catch (WriterException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return fileName;
        }
    
    
        /**
         * 读取二维码
         * @param path 存放二维码的全路径
         * @return
         */
        public Result ReadQrCode(String path) {
            Result result = null;
            try {
                MultiFormatReader multiFormatReader = new MultiFormatReader();
                File file = new File(path);
                BufferedImage image = ImageIO.read(file);
                //定义二维码参数
                Map hints = new HashMap();
                hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    
                //获取读取二维码结果
                BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
                result = multiFormatReader.decode(binaryBitmap, hints);
    
                System.out.println("读取二维码: " + result.toString());
                System.out.println("二维码格式: " + result.getBarcodeFormat());
                System.out.println("二维码内容: " + result.getText());
            } catch (NotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }
    
    }
  • 相关阅读:
    PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题
    团队展示
    测试与优化:设计模式的应用和初次尝试多线程
    结对编程,三年级混合运算
    一个大气又可爱的标题
    随笔
    C#操作word类文件
    TypeError: Object of type 'int32' is not JSON serializable ——已解决
    Error: UserWarning: Ignoring URL... 已解决
    tensorflow(二)----线程队列与io操作
  • 原文地址:https://www.cnblogs.com/daishoucheng/p/10239150.html
Copyright © 2020-2023  润新知