Java解析二维码与生成二维码

Java解析二维码与生成二维码

public class JieDuErWerMa {
	/**
	 * 解析二维码
	 * @param path :二维码路径
	 */
	 public static void ErWeiCode(String path){		
		 
		 try {
			 //拿到二维码,用File接收文件
			File file=new File(path);
			//通过ImageIO来读取文件存储到内存
			BufferedImage image=ImageIO.read(file);
			//创建一个对象,将image交给他解析
			BufferedImageLuminanceSource source=new BufferedImageLuminanceSource(image);
			//由于计算机是由二进制建立的,so 需要转为二进制对象
			HybridBinarizer nBinarizer=new HybridBinarizer(source);
			BinaryBitmap bitmap=new BinaryBitmap(nBinarizer);
			//解决乱码问题
			HashMap hashMap=new HashMap<>();
			hashMap.put(EncodeHintType.CHARACTER_SET, "UTF-8");
			//解析
			MultiFormatReader reader=new MultiFormatReader();
			//接收解析后的结果
			Result result=reader.decode(bitmap,hashMap);
			
			//输出
			System.out.println("二维码的格式类型:  " + result.getBarcodeFormat());
			System.out.println("二维码的内容:          "+ result.getText()); 
			
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		  
		 
	 }

	/**
	 * 生成二维码
	 * @param string
	 * @throws Exception 
	 */
	public static void CreateErWeiCode(String str) {
		try {
			 //设置二维码的宽高
			int  width=300;
			int  height=300;
			//设置二维码的内容
			String content=str;	
			//设置二维码的格式
			String format = "png"; 
			//解决编码乱码问题:因为 JSP 默认取到的是iso-8859-1的,所以要先按iso-8859-1取出来,再转成utf-8
			String contents=new String(content.getBytes("UTF-8"),"ISO-8859-1");
			//定义二维码参数EncodeHinType 在我们的jar中已定义好的了
		    HashMap<EncodeHintType,Comparable> map=new HashMap();
		    //设置字符集编码,防止内容存在汉字乱码
		    map.put(EncodeHintType.CHARACTER_SET, "utf-8"); 
			BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height,map);
			File outputFile = new File("C:\\Users\\Administrator\\Desktop\\new.png"); 
			
			MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		System.out.println("二维码生成成功!!");
	}
}

需要使用的jar包

<dependency>
	<groupId>com.google.zxing</groupId>
		<artifactId>javase</artifactId>
	<version>3.3.1</version>
</dependency> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值