博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
几行代码搞定java生成解析二维码功能
阅读量:6264 次
发布时间:2019-06-22

本文共 2611 字,大约阅读时间需要 8 分钟。

最近公司要求扫描二维码和生成二维码的功能。而群里部分网友也提到了。我这里就写了一个demo,和大家分享。代码很简介,希望大家能够喜欢。

网友表示在网上搜索了很多,发现不是代码不全,就是jar不匹配。

我这里共享了一个zxing的2.2版本的例子,也提供了下载地址。实现代码如下:

package com.herman.test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;import com.google.zxing.BinaryBitmap;import com.google.zxing.DecodeHintType;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatReader;import com.google.zxing.MultiFormatWriter;import com.google.zxing.NotFoundException;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.HybridBinarizer;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;/** * 二维码工具类 * @author Herman.Xiong * @date 2015-7-10 上午10:52:15 * @version V3.0 * @since jdk 1.6,tomcat 6.0 */public class ZxingUtil {	private static final Map
encodeMap = new HashMap
(); private static final Map
decodeMap=new HashMap
(); private static final String charset="UTF-8",format="png"; private static final int size=150; private ZxingUtil() {} /** * 生成二维码图片 * @author Herman.Xiong * @date 2015-7-10 上午10:26:33 * @param file * @throws WriterException * @throws IOException */ public static void createQRCode(String data, File file) throws WriterException, IOException { MatrixToImageWriter.writeToFile(new MultiFormatWriter().encode( new String(data.getBytes(charset), charset), BarcodeFormat.QR_CODE, size, size, encodeMap), format, file); } /** * 读取二维码信息 * @author Herman.Xiong * @date 2015-7-10 上午10:25:58 * @param filePath 二维码图片路径 * @return * @throws FileNotFoundException * @throws IOException * @throws NotFoundException */ public static String readQRCode(String filePath) throws FileNotFoundException, IOException, NotFoundException { return new MultiFormatReader().decode(new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(new FileInputStream(filePath))))),decodeMap).getText(); } public static void main(String [] arg){ try{ createQRCode("http://blog.csdn.net/xmtblog", new File("D:\\111.png")); System.out.println(readQRCode("D:\\111.png")); //源码下载地址:http://download.csdn.net/detail/xmt1139057136/8886473 //欢迎大家关注我的博客!如有疑问,请加QQ群:454796847共同学习! }catch(Exception e){ e.printStackTrace(); } }}
运行效果如下:
欢迎大家关注我的博客!如有疑问,请加QQ群:454796847共同学习!

源码下载地址:

你可能感兴趣的文章
使用webpack从0搭建多入口网站脚手架,可复用导航栏/底部通栏/侧边栏,根据页面文件自动更改配置,支持ES6/Less...
查看>>
消息未读之点不完的小红点(Node+Websocket)
查看>>
JavaScript 之 DOM [ Node对象 ]
查看>>
使用vscode写typescript(node.js环境)起手式
查看>>
飞天技术汇大视频专场:全民视频时代下的创新技术之路
查看>>
以太坊分片详解
查看>>
Redis安装以及PHP开启Redis扩展
查看>>
JAVA IO BIO NIO AIO
查看>>
使用iview的组件 Table 表格,有固定列,设置其中一个列适应屏幕大小
查看>>
Vue学习笔记1
查看>>
用户输入一个网址到页面展示内容的这段时间内,浏览器和服务器都发生了生么事情?...
查看>>
动手搞一个Promise
查看>>
[case32]alibaba限流组件Sentinel实战
查看>>
用python来给图片加水印
查看>>
【跃迁之路】【550天】程序员高效学习方法论探索系列(实验阶段307-2018.08.09)...
查看>>
link和@import的区别浅析
查看>>
vscode 相关
查看>>
nodejs 全自动使用 Tinypng (免费版,无需任何配置)压缩图片
查看>>
彻底理解Java中的基本数据类型转换(自动、强制、提升)
查看>>
在CentOS中安装redis5.0
查看>>