1.引入jar包

 zxing-core-1.7.jar  :   http://viralpatel.net/blogs/download/jar/zxing-core-1.7.jar

 zxing-javase-1.7.jar :  http://viralpatel.net/blogs/download/jar/zxing-j2se-1.7.jar

 

2.工具类—QRCodeUtil.java

  1 package com.ray.util;
  2 
  3 import java.awt.image.BufferedImage;
  4 import java.io.File;
  5 import java.util.Hashtable;
  6 import java.util.Random;
  7 import javax.imageio.ImageIO;
  8 
  9 import com.google.zxing.BarcodeFormat;
 10 import com.google.zxing.Binarizer;
 11 import com.google.zxing.BinaryBitmap;
 12 import com.google.zxing.EncodeHintType;
 13 import com.google.zxing.LuminanceSource;
 14 import com.google.zxing.MultiFormatReader;
 15 import com.google.zxing.MultiFormatWriter;
 16 import com.google.zxing.Result;
 17 import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
 18 import com.google.zxing.client.j2se.MatrixToImageWriter;
 19 import com.google.zxing.common.BitMatrix;
 20 import com.google.zxing.common.HybridBinarizer;
 21 
 22 public class QRCodeUtil {
 23 
 24     /**
 25      * 根据内容,生成指定宽高、指定格式的二维码图片
 26      *
 27      * @param text   内容
 28      * @param width  宽
 29      * @param height 高
 30      * @param format 图片格式
 31      * @return 生成的二维码图片路径
 32      * @throws Exception
 33      */
 34     public static String generateQRCode(String text, int width, int height, String format) throws Exception {
 35         Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
 36         hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
 37         BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, hints);
 38        
 39         String pathName = "D:/new.png";   //指定输出文件的路径
 40         File outputFile = new File(pathName);
 41         MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);
 42      
 43         return pathName;
 44     }
 45     
 46     /**
 47      * 随机生成指定长度的验证码
 48      *
 49      * @param length 验证码长度
 50      * @return 生成的验证码
 51      */
 52     public  static String generateNumCode(int length) {
 53         String val = "";
 54         String charStr = "char";
 55         String numStr = "num";
 56         Random random = new Random();
 57 
 58         //参数length,表示生成几位随机数
 59         for (int i = 0; i < length; i++) {
 60 
 61             String charOrNum = random.nextInt(2) % 2 == 0 ? charStr : numStr;
 62             //输出字母还是数字
 63             if (charStr.equalsIgnoreCase(charOrNum)) {
 64                 //输出是大写字母还是小写字母
 65                 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
 66                 val += (char) (random.nextInt(26) + temp);
 67             } else if (numStr.equalsIgnoreCase(charOrNum)) {
 68                 val += String.valueOf(random.nextInt(10));
 69             }
 70         }
 71         return val;
 72     }
 73     
 74     /**
 75      * 解析指定路径下的二维码图片
 76      *
 77      * @param filePath 二维码图片路径
 78      * @return
 79      */
 80     public static String parseQRCode(String filePath) {
 81         String content = "";
 82         try {
 83             File file = new File(filePath);
 84             BufferedImage image = ImageIO.read(file);
 85             LuminanceSource source = new BufferedImageLuminanceSource(image);
 86             Binarizer binarizer = new HybridBinarizer(source);
 87             BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
 88             Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
 89             hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
 90             MultiFormatReader formatReader = new MultiFormatReader();
 91             Result result = formatReader.decode(binaryBitmap,  hints);
 92 
 93             System.out.println("result 为:" + result.toString());
 94             System.out.println("resultFormat 为:" + result.getBarcodeFormat());
 95             System.out.println("resultText 为:" + result.getText());
 96             //设置返回值
 97             content = result.getText();
 98         } catch (Exception e) {
 99             e.printStackTrace();
100         }
101         return content;
102     }
103     
104     
105     
106     
107     
108 }
View Code

相关文章:

  • 2021-12-10
  • 2021-12-28
  • 2021-12-20
  • 2021-12-10
  • 2021-09-11
  • 2021-12-10
  • 2021-12-10
猜你喜欢
  • 2021-12-16
  • 2021-12-10
  • 2021-12-10
  • 2021-11-30
  • 2021-07-12
  • 2021-12-20
相关资源
相似解决方案