java代码实现二维码的生成和解析

作者:流年 | 创建时间: 2023-04-25
2015年什么最火,二维码,2016年随处可见的是什么,二维码。二维码的历史我们就不探究了,今天分享的是利用Java代码实现二维码的生成和解析。Java代码生成和解析二维码涉及到的东西比较多,还需要引入两个jar包,适合有一定Java功底的...
java代码实现二维码的生成和解析

操作方法

1、下载二维码支持jar包,qrcode.jar和qrcode_swetake.jar,大家可以在网上搜索,也可以点击连接下载我已经使用过的jar包,地址如下:http://download.csdn.net/detail/bakehe/9548373

2、编写生成二维码的Java代码,main方法如下: public static void main(String[] args) { String data = "一个程序员的微信公众账号"; /** * 生成二维码 */ CreateQRCode.encode(data, "D:/test/何推推.JPG"); /** * 解析二维码 */ //CreateQRCode.decode("D:/test/微信公众账号.JPG"); }

3、对应的生成二维码的方法encode(),代码如下: private 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; }

4、解析二维码的main(),代码如下: public static void main(String[] args) { String data = "一个程序员的微信公众账号"; /** * 生成二维码 */ //CreateQRCode.encode(data, "D:/test/何推推.JPG"); /** * 解析二维码 */ CreateQRCode.decode("D:/test/微信公众账号.JPG"); } 下面是解析的微信公众账号,以连接的形式展示出来!

5、解析二维码的decode()方法,这里我是利用微信的个人公众账号生成的图片,欢迎大家扫描,代码如下: private 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 J2SEImageGucas(image))); System.out.println("解析内容如下:"+decodedData); return decodedData; }

6、解析二维码的main(),代码如下: public static void main(String[] args) { String data = "一个程序员的微信公众账号"; /** * 生成二维码 */ //CreateQRCode.encode(data, "D:/test/何推推.JPG"); /** * 解析二维码 */ CreateQRCode.decode("D:/test/何推推.JPG"); } 下面是解析的是生成的二维码图片,以文字的形式展示出来!

二维码的生成和解析其实很简单,但是里面用到的图片的生成和图片的读取,这是Java IO流的相关知识,大家也可以直接把它写成一个封装类,直接调用。当然咨询研究一下,非常有助于提升自己的开发能力。好了,欢迎大家继续关注我的分享!

温馨提示

jar包
点击展开全文

更多推荐