创建和读取简单二维码的案例:

创建二维码我们可以通过zxing , QrCode  和 jquery   的方式:

一 .  zxing 的方式创建:

1.首先我们通过zxing 的方式创建二维码: 

     需要下载zxing jar包:https://download.csdn.net/download/qq_37928350/10864817

package com.mk.zxing;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.HashMap;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class CreateQRCode {
	public static void main(String[] args) {
		int width = 300;
		int height = 300;
		String content = "这是一个二维码";
		
		String format = "png";
		
		//定义二维码参数
		HashMap hhmp =  new HashMap<>();
		hhmp.put(EncodeHintType.CHARACTER_SET, "utf-8");
		hhmp.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
		hhmp.put(EncodeHintType.MARGIN, 2);
		
		// 生成路径
		Path file = new File("E:/二维码/img.png").toPath();
		
		//生成二维码
		try {
			BitMatrix encode = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height,hhmp);
			MatrixToImageWriter.writeToPath(encode, format, file);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

2. 读取二维码的内容:

package com.mk.zxing;

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;

import javax.imageio.ImageIO;

import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;

public class ReadQRCode {

	public static void main(String[] args) {
		try {
			MultiFormatReader mfr = new MultiFormatReader();
			File file = new File("E:/二维码/img.png");
			BufferedImage img = ImageIO.read(file);
			BinaryBitmap binaryBitMap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(img)));
			//定义二维码参数
			HashMap hhmp =  new HashMap<>();
			hhmp.put(EncodeHintType.CHARACTER_SET, "utf-8");
			Result decode = mfr.decode(binaryBitMap, hhmp);
			System.out.println("解析结果:"+decode.toString());
			System.out.println("二维码格式类型:"+decode.getBarcodeFormat());
			System.out.println("二维码内容:"+decode.getText());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}
}

二 . QrCode 

1. 通过 QrCode 的方式创建二维码:

需要的jar包: 链接: https://pan.baidu.com/s/1uCAMxMYpZzj-R6nlBUTR2A  提取码:3qu3 

package com.imooc_qrcode;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

/**
 * @Description: 
 * @author 01391056
 * @date 2018年12月20日下午2:56:29
 * CreateQrCode
 * 
 */
public class CreateQrCode {
	public static void main(String[] args) throws Exception {
		Qrcode x=new Qrcode();
		x.setQrcodeErrorCorrect('M'); //纠错等级
		x.setQrcodeEncodeMode('B'); // N:代表数字  A:代表a-Z  B:代码其他字符  
		x.setQrcodeVersion(7); // 版本号
		String qrData = "www.baidu.com";
		int width = 67+12*(7-1);  //公式:67+12*(version -1)
		int height = 67+12*(7-1);
		
		BufferedImage bi = new  BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
		
		Graphics2D gs = bi.createGraphics();
		gs.setBackground(Color.WHITE);
		gs.setColor(Color.black);
		gs.clearRect(0, 0, width, height);
		
		int pixoff = 2; // 偏移量
		byte[] d =qrData.getBytes("gb2312"); // 有中文加"gb2312" 沒有不用加
		if (d.length>0 && d.length <120){
		    boolean[][] s = x.calQrcode(d);

		    for (int i=0;i<s.length;i++){
			for (int j=0;j<s.length;j++){
			    if (s[j][i]) {
				gs.fillRect(j*3+pixoff,i*3+pixoff,3,3);
			    }
			}
		    }
		}
		gs.dispose();
		bi.flush();
		
		ImageIO.write(bi, "png", new File("E:/Qrcode/qrcode.png"));
	}

}


2. 通过 QrCode 的方式读取二维码:

package com.imooc_qrcode;

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import jp.sourceforge.qrcode.QRCodeDecoder;

/**
 * @Description: 
 * @author 01391056
 * @date 2018年12月20日下午4:14:21
 * 
 * 
 */
public class ReadQrCode {

	public static void main(String[] args) throws Exception {
		File file = new File("E:/Qrcode/qrcode.png");
		BufferedImage bufferedImage = ImageIO.read(file);
		QRCodeDecoder qrCodeDecoder = new QRCodeDecoder();
		String result=	new String(qrCodeDecoder.decode(new MyQrCodeImage(bufferedImage)),"gb2312");
		System.out.println(result);
	}
}
package com.imooc_qrcode;

import java.awt.image.BufferedImage;

import jp.sourceforge.qrcode.data.QRCodeImage;

/**
 * @Description: 
 * @author 01391056
 * @date 2018年12月20日下午4:18:04
 * MyQrCodeImage
 * 
 */
public class MyQrCodeImage implements QRCodeImage {

	BufferedImage bufferedImage;
	
	public MyQrCodeImage(BufferedImage bufferedImage){
		this.bufferedImage = bufferedImage;
	}
	/**
	 * getHeight
	 * @author 01391056
	 * @date 2018年12月20日下午4:18:04
	 */
	@Override
	public int getHeight() {

		return bufferedImage.getHeight();

	}

	/**
	 * getPixel
	 * @author 01391056
	 * @date 2018年12月20日下午4:18:04
	 */
	@Override
	public int getPixel(int arg0, int arg1) {

		return bufferedImage.getRGB(arg0, arg1);

	}

	/**
	 * getWidth
	 * @author 01391056
	 * @date 2018年12月20日下午4:18:04
	 */
	@Override
	public int getWidth() {

		return bufferedImage.getWidth();

	}

}

三 .  jquery

1 .jquery方式生成二维码:

    需要jquery.min.js 和 jquery.qucode.min.js 两个js 文件:

    下载地址:https://pan.baidu.com/s/1LNRU3ffUVblPFXVZJMURpA  提取码:uy2p 
    首先创建web 项目:  结构如下图:

           

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>创建二维码</title>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.qrcode.min.js"></script>
</head>
<body>
	这是一个二维码:<br>
	<div id="qrcode"></div>
	<script type="text/javascript">
		jQuery('#qrcode').qrcode("www.baidu.com");
		jquery('#qrcode').qrcode({width: 64,height: 64,text: "size doesn't matter"});
	</script>
</body>
</html>

将项目添加 服务器中运行,访问项目下的jsp文件即可.

如果需要扫描二维码展示一个网址,我们需要在网址的前面加上http: / https

就以上这几种方式创建的二维码,既可以通过zxing 读取 ,也可以通过 qrcode 读取.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值