Java 生成二维码

 参考所得

第一步:  下载两个jar包:qrcode.jar和qrcode_swetake.jar

                链接:https://pan.baidu.com/s/1RdW7cWz9-mErx13T-QxnHg 
                提取码:e44a 
 

第二步:  二维码生成代码编写

                 1》、

package com.zhao.controller;
import com.zhao.util.CreateQRCode;

public class 二维码 {
	
	public static void main(String[] args) {
		
		
		String data = "同志,我想盘你!!!!!!!!!!!!!!!";
		/**
		* 生成二维码
		*/
		CreateQRCode.encode(data, "C:/Users/acer/Desktop/二维码/hehe.JPG");
		
		/**
		* 解析二维码
		*/
		//CreateQRCode.decode("D:/test/微信公众账号.JPG");
	}
	
}

  工具类CreateQRCode .java

package com.zhao.util;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;

public class CreateQRCode {
	
	
	//生成二维码
	public static boolean encode(String srcValue, String qrcodePicfilePath){
		int MAX_DATA_LENGTH = 200;
		     byte[] d = srcValue.getBytes();
		     int dataLength = d.length;
		     int imageWidth = 113; 
		     int imageHeight = imageWidth;
		     BufferedImage bi = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_INT_RGB);
		     Graphics2D g = bi.createGraphics();
		     g.setBackground(Color.WHITE);
		     g.clearRect(0, 0, imageWidth, imageHeight);
		     g.setColor(Color.BLACK);
		     if (dataLength > 0 && dataLength <= MAX_DATA_LENGTH) {
		        Qrcode qrcode = new Qrcode();
		        qrcode.setQrcodeErrorCorrect('M'); 
		        qrcode.setQrcodeEncodeMode('B'); 
		        qrcode.setQrcodeVersion(5);
		        boolean[][] b = qrcode.calQrcode(d);
		        int qrcodeDataLen = b.length;
		        for (int i = 0; i < qrcodeDataLen; i++) {
		           for (int j = 0; j < qrcodeDataLen; j++) {
		              if (b[j][i]) {
		                 g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3); 
		              }
		           }
		        }
		        System.out.println("二维码成功生成!!");
		     } else {
		        System.out.println( dataLength +"大于"+ MAX_DATA_LENGTH);
		        return false;
		     }
		     g.dispose();
		     bi.flush();
		     File f = new File(qrcodePicfilePath);
		     String suffix = f.getName().substring(f.getName().indexOf(".")+1, f.getName().length());
		     System.out.println("二维码输出成功!!");
		     try {
		        ImageIO.write(bi, suffix, f);
		     } catch (IOException ioe) {
		        System.out.println("二维码生成失败" + ioe.getMessage());
		        return false;
		     }
		return true;
		}

     //解析二维码
/*	public static String decode(String qrcodePicfilePath) {
		System.out.println("开始解析二维码!!");
		 读取二维码图像数据 
		File imageFile = new File(qrcodePicfilePath);
		BufferedImage image = null;
		try {
		image = ImageIO.read(imageFile);
		} catch (IOException e) {
		System.out.println("读取二维码图片失败: " + e.getMessage());
		return null;
		}
		 解二维码 
		QRCodeDecoder decoder = new QRCodeDecoder();
		String decodedData = new String(decoder.decode(new QRCodeImage(image)));
		System.out.println("解析内容如下:"+decodedData);
		return decodedData;
		}
	*/
	
	
	

}

第三步:执行main函数 结果如下图

生成二维码结果如下图

 

扫二维码得结果如下:

 

到此over。解析二维码代码自己琢磨。