使用JAVA生成二维码

今天跟大家分享一下,如何使用JAVA生成二维码,废话不多说,上图

第一步,添加项目所需的 maven依赖

Clipboard Image.png

会自动导入core-3.2.0.jar和javase-3.2.0.jar两个jar包

Clipboard Image.png

package com.zz.QRcode.utils;

import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;

public class QRcodeUtil {
	/**
	 * @param content 二维码内容
	 * @param width   二维码图片的宽度
	 * @param height  二维码图片的高度
	 * @param format  二维码图片的格式
	 * @param path    二维码写入的路径
	 */
	public static void createQRcode(String content,int width,int height,String format,String file){
		
		Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
		// 设置字符编码
		hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
		//创建二维码模型
		try {
			// 生成二维码
			BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
			MatrixToImageWriter.writeToPath(bitMatrix, format, new File(file).toPath());
		} catch (IOException e) {
			e.printStackTrace();
		} catch (WriterException e) {
			e.printStackTrace();
		}
	}
	/**
	 * @param content 二维码内容
	 * @param format  二维码图片的格式
	 * @param path    二维码写入的路径
	 */
	public static void createQRcodeDefaultSize(String content,String format,String file){
		createQRcode(content, 300, 300, format, file);
	}
	/**
	 * @param content 二维码内容
	 * @param path    二维码写入的路径
	 */
	public static void createPngQRcodeDefaultSize(String content,String file){
		createQRcodeDefaultSize(content, "png", file);
	}
	/**
	 * @param content 二维码内容
	 * @param path    二维码写入的路径
	 * @param width   二维码图片的宽度
	 * @param height  二维码图片的高度
	 */
	public static void createPngQRcode(String content,String file,int width,int height){
		createQRcode(content, width, height, "png", file);
	}
}

这里使用的是MatrixToImageWriter类,该类由goole提供,可以直接使用

第三步,测试生成二维码

package com.zz.QRcode.test;

import com.zz.QRcode.utils.QRcodeUtil;

public class Test {

	@org.junit.Test
	public void test() {
		String content = "http://urfunny.xyz";
		String file = "F:/壁纸/test.png";
		//使用默认大小的png格式生成二维码
		QRcodeUtil.createPngQRcodeDefaultSize(content,file);
	}

}

此时我们查看生成的二维码

Clipboard Image.png

第四步,用手机扫描二维码

Clipboard Image.png

第五步,使用JAVA解析二维码

在工具类中添加方法

     	/**
	 * 
	 * @param file 二维码图片所在的路径
	 * @return 返回解析到的二维码内容
	 */
	public static String decodeQRcode(String file){
		String content = null;
		try {
			//创建图片缓存流
			BufferedImage image = ImageIO.read(new File(file));
			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);
            content = result.getText();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (NotFoundException e) {
			e.printStackTrace();
		}  
		return content;
	}
第六步,使用JAVA解析二维码
package com.zz.QRcode.test;

import com.zz.QRcode.utils.QRcodeUtil;

public class Test {

	@org.junit.Test
	public void test() {
		String file = "F:/壁纸/test.png";
		//使用java解析二维码
		String content = QRcodeUtil.decodeQRcode(file);
		System.out.println(content);
	}

}

控制台打印结果

Clipboard Image.png


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值