Java生成与解析二维码
1、下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar,
其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免积分):http://download.csdn.net/detail/bakehe/9548373
2、创建J2SEImageGucas实现类,用于实现二维码图像接口QRCodeImage
1 package org.sasc.core.twobarcode; 2 3 import java.awt.image.BufferedImage; 4 5 import jp.sourceforge.qrcode.data.QRCodeImage; 6 7 public class J2SEImageGucas implements QRCodeImage { 8 BufferedImage image; 9 10 public J2SEImageGucas(BufferedImage image) { 11 this.image = image; 12 } 13 14 public int getWidth() { 15 return image.getWidth(); 16 } 17 18 public int getHeight() { 19 return image.getHeight(); 20 } 21 22 public int getPixel(int x, int y) { 23 return image.getRGB(x, y); 24 } 25 }
3、编写生成二维码的方法encode和解析二维码的方法decode
1 package org.sasc.core.twobarcode; 2 3 import java.awt.Color; 4 import java.awt.Graphics2D; 5 import java.awt.image.BufferedImage; 6 import java.io.File; 7 import java.io.IOException; 8 9 import javax.imageio.ImageIO; 10 11 import org.apache.log4j.Logger; 12 13 import com.swetake.util.Qrcode; 14 15 import jp.sourceforge.qrcode.QRCodeDecoder; 16 17 public class CreateQRCode { 18 private static final Logger log = Logger.getLogger(CreateQRCode.class); 19 20 /** 21 * 生成二维码 22 * 23 * @param srcValue 二维码内容 24 * @param qrcodePicfilePath 生成路径及二维码图片名称 25 * @return 26 * @author muxiaoyou 27 */ 28 private static boolean encode(String srcValue, String qrcodePicfilePath) { 29 int MAX_DATA_LENGTH = 200; 30 byte[] d = srcValue.getBytes(); 31 int dataLength = d.length; 32 int imageWidth = 139;//宽度为139像素 33 int imageHeight = imageWidth;//长度也为139像素,即此二维码为139*139像素 34 BufferedImage bi = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); 35 36 Graphics2D g = bi.createGraphics(); 37 g.setBackground(Color.WHITE); 38 g.clearRect(0, 0, imageWidth, imageHeight); 39 g.setColor(Color.BLACK); 40 41 if (dataLength > 0 && dataLength <= MAX_DATA_LENGTH) { 42 //QR码的最大容量取决于选择的版本、纠错级别和编码模式(Mode:数字、字符、多字节字符等) 43 Qrcode qrcode = new Qrcode(); 44 qrcode.setQrcodeErrorCorrect('M');//设置容错率为M 45 qrcode.setQrcodeEncodeMode('B');//设置二维码加密模式为B 46 qrcode.setQrcodeVersion(7);//设置二维码模式为7,取值范围为1到40,值越大所能包含的字符信息量越大 47 boolean[][] b = qrcode.calQrcode(d); 48 int qrcodeDataLen = b.length; 49 for (int i = 0; i < qrcodeDataLen; i++) { 50 for (int j = 0; j < qrcodeDataLen; j++) { 51 if (b[j][i]) { 52 g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3); 53 } 54 } 55 } 56 log.info("二维码生成完成!!"); 57 } else { 58 log.info(dataLength + "大于" + MAX_DATA_LENGTH); 59 return false; 60 } 61 g.dispose(); 62 bi.flush(); 63 64 File f = new File(qrcodePicfilePath); 65 if(!f.exists()){ 66 f.mkdirs(); 67 } 68 String suffix = f.getName().substring(f.getName().indexOf(".") + 1, f.getName().length()); 69 try { 70 ImageIO.write(bi, suffix, f); 71 log.info("二维码输出成功!!"); 72 } catch (IOException ioe) { 73 log.info("二维码生成失败" + ioe.getMessage()); 74 return false; 75 } 76 return true; 77 } 78 79 /** 80 * 解析二维码 81 * @param qrcodePicfilePath 二维码图片路径 82 * @return 83 * @author muxiaoyou 84 */ 85 private static String decode(String qrcodePicfilePath) { 86 log.info("开始解析二维码!!"); 87 /* 读取二维码图像数据 */ 88 File imageFile = new File(qrcodePicfilePath); 89 BufferedImage image = null; 90 try { 91 image = ImageIO.read(imageFile); 92 } catch (IOException e) { 93 log.info("读取二维码图片失败: " + e.getMessage()); 94 return null; 95 } 96 /* 解析二维码 */ 97 QRCodeDecoder decoder = new QRCodeDecoder(); 98 String decodedData = new String(decoder.decode(new J2SEImageGucas(image))); 99 log.info("解析内容如下:" + decodedData); 100 return decodedData; 101 } 102 103 /** 104 * 程序入口 105 */ 106 public static void main(String[] args) { 107 String data = "文档编号:Document-967-9301;文档名称:普通文档"; 108 /** 109 * 生成二维码 110 */ 111 CreateQRCode.encode(data, "D:/twoBarCodeImagessss/文档Document.JPG"); 112 /** 113 * 解析二维码 114 */ 115 CreateQRCode.decode("D:/twoBarCodeImagessss/文档Document.JPG"); 116 } 117 118 }
转载于:https://www.cnblogs.com/cnjavahome/p/6018583.html
Java生成与解析二维码相关推荐
- java生成以及解析二维码
java生成以及解析二维码 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 ...
- Java生成和解析二维码工具类(简单经典)
Java生成和解析二维码工具类 开箱即用,简单不废话. pom.xml引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...
- Java生成和解析二维码
前言:曾经有做过不少微信公众号和移动网站的项目,对二维码还算有点了解,刚收到这个任务的时候就想着竟然要用二维码存文本,那就得先考究一下这小小的二维码到底能存多少的东西了. 需求:使用二维码存放文本(x ...
- java生成和解析二维码实战——QRCode
直接上代码,以下程序可直接运行: package qrcode;import java.awt.Color; import java.awt.Graphics2D; import java.awt.i ...
- java生成与解析二维码 支持插入图片与文字
1.依赖: <!-- https://mvnrepository.com/artifact/com.google.zxing/core --><dependency><g ...
- java 生成、解析二维码并在二维码中添加样式
https://blog.csdn.net/yxj13935213026/article/details/81017902
- Java实现生成和解析二维码
Java实现生成和解析二维码 文章目录 Java实现生成和解析二维码 一.建立项目 二.创建工具类 三.创建启动类 一.建立项目 首先需要创建一个普通的 Maven 项目,在这里我用的是 google ...
- java利用zxing来生成和解析二维码,支持中文
java在二维码的生成和解析上,网上有些人说如果要解析中文,得去修改工具包的Encoder类中的 static final String DEFAULT_BYTE_MODE_ENCODING = &q ...
- 使用zxing生成与解析二维码
随着二维码的普及,二维码在生活中的使用使用的场景也越来越来多,本文章就来介绍使用zxing来生成与解析二维码.生成二维码的开源项目很多,选择zxing则是因为其出自Google并且长期有人进行维护,值 ...
最新文章
- 本地如何使用phpstudy环境搭建多站点
- 【kudu pk parquet】TPC-H Query2对比解析
- Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介、使用方法、经典案例之详细攻略
- 使用idea编写SparkStreaming消费kafka中的数据,并对数据进行某一指标的处理【小案例】(五)
- sap.m.SplitApp
- arcgis出界址点成果表_界址点成果表打印
- ssis sql_如何在SSIS中使用SQL随机数
- 【Java 面向对象】基础、Java程序的内存划分、嵌套类(内部类、静态嵌套类)、局部类、接口的升级问题(默认方法、静态方法)、instanceof
- 牛客练习赛21:B. 黑妹的游戏II(博弈DP)
- 10款非常棒的开源论坛系统推荐
- JS 页面跳转,参数的传递
- 一文搞懂步进电机特性、原理及驱动器设计
- 算法基本知识,入门必备
- 学前端好还是后端好?
- 蒙特卡罗(洛)方法及其在布丰投针试验中的应用(一)
- 网络诊断提示:远程计算机或设备将不接受连接 (根治 )
- kali安装openvas全过程
- java 农历_Java 农历算法
- nodes are available: 1 node(s) had taints that the pod didn‘t tolerate
- Ubuntu20.04+gdb/vscode调试ROS(VINS-Mono)程序
热门文章
- ftp服务器连接数修改,ftp服务器连接数设置
- 量子侦探社之“寻猫记”
- 计算机使用的一些技巧
- 如何解决‘CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’错误
- 什么是量子计算机 什么原理,量子计算机原理是什么?
- BZOJ2069 POI2004ZAW(最短路)
- 金刚菩提子开裂自动修复此计算机,金刚菩提子裂了怎么办 教你这些修复方法...
- 全国数字金融与量化金融案例大赛经验分享
- 让linux识别html,8 款浏览器对 HTML5 支持评测
- 足球相关的英文专业术语(持续更新中...Ctrl+F可直接进行搜索)