1、下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar,

其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免积分):http://download.csdn.net/detail/bakehe/9548373

2、创建J2SEImageGucas实现类,用于实现二维码图像接口QRCodeImage

 package org.sasc.core.twobarcode;

 import java.awt.image.BufferedImage;

 import jp.sourceforge.qrcode.data.QRCodeImage;

 public class J2SEImageGucas implements QRCodeImage {
BufferedImage image; public J2SEImageGucas(BufferedImage image) {
this.image = image;
} public int getWidth() {
return image.getWidth();
} public int getHeight() {
return image.getHeight();
} public int getPixel(int x, int y) {
return image.getRGB(x, y);
}
}

3、编写生成二维码的方法encode和解析二维码的方法decode

 package org.sasc.core.twobarcode;

 import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; import javax.imageio.ImageIO; import org.apache.log4j.Logger; import com.swetake.util.Qrcode; import jp.sourceforge.qrcode.QRCodeDecoder; public class CreateQRCode {
private static final Logger log = Logger.getLogger(CreateQRCode.class); /**
* 生成二维码
*
* @param srcValue 二维码内容
* @param qrcodePicfilePath 生成路径及二维码图片名称
* @return
* @author muxiaoyou
*/
private static boolean encode(String srcValue, String qrcodePicfilePath) {
int MAX_DATA_LENGTH = 200;
byte[] d = srcValue.getBytes();
int dataLength = d.length;
int imageWidth = 139;//宽度为139像素
int imageHeight = imageWidth;//长度也为139像素,即此二维码为139*139像素
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) {
//QR码的最大容量取决于选择的版本、纠错级别和编码模式(Mode:数字、字符、多字节字符等)
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M');//设置容错率为M
qrcode.setQrcodeEncodeMode('B');//设置二维码加密模式为B
qrcode.setQrcodeVersion(7);//设置二维码模式为7,取值范围为1到40,值越大所能包含的字符信息量越大
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);
}
}
}
log.info("二维码生成完成!!");
} else {
log.info(dataLength + "大于" + MAX_DATA_LENGTH);
return false;
}
g.dispose();
bi.flush(); File f = new File(qrcodePicfilePath);
if(!f.exists()){
f.mkdirs();
}
String suffix = f.getName().substring(f.getName().indexOf(".") + 1, f.getName().length());
try {
ImageIO.write(bi, suffix, f);
log.info("二维码输出成功!!");
} catch (IOException ioe) {
log.info("二维码生成失败" + ioe.getMessage());
return false;
}
return true;
} /**
* 解析二维码
* @param qrcodePicfilePath 二维码图片路径
* @return
* @author muxiaoyou
*/
private static String decode(String qrcodePicfilePath) {
log.info("开始解析二维码!!");
/* 读取二维码图像数据 */
File imageFile = new File(qrcodePicfilePath);
BufferedImage image = null;
try {
image = ImageIO.read(imageFile);
} catch (IOException e) {
log.info("读取二维码图片失败: " + e.getMessage());
return null;
}
/* 解析二维码 */
QRCodeDecoder decoder = new QRCodeDecoder();
String decodedData = new String(decoder.decode(new J2SEImageGucas(image)));
log.info("解析内容如下:" + decodedData);
return decodedData;
} /**
* 程序入口
*/
public static void main(String[] args) {
String data = "文档编号:Document-967-9301;文档名称:普通文档";
/**
* 生成二维码
*/
CreateQRCode.encode(data, "D:/twoBarCodeImagessss/文档Document.JPG");
/**
* 解析二维码
*/
CreateQRCode.decode("D:/twoBarCodeImagessss/文档Document.JPG");
} }

Java生成与解析二维码的更多相关文章

  1. Java生成、解析二维码

    今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.m ...

  2. java生成和解析二维码

    前言 现在,二维码的应用已经非常广泛,在线生成器也是诸多,随手生成. 所以就和大家分享一个小案例,用zxing来做一个的二维码生成器,当然这个例子是比较简单,若是写的不好请多多包涵. ZXING项目是 ...

  3. 使用Google提供的ZXing Core,Java生成、解析二维码

    1.maven项目中,pom.xml中引入ZXing Core工具包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core ...

  4. java 生成和解析二维码

    public class QRCode { /** * 解析二维码(QRCode) * @param imgPath * @return */ public static String decoder ...

  5. JAVA中生成、解析二维码图片的方法

    JAVA中生成.解析二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能,并有解析二维码的方法. 一.下载zxing的架包,并导 ...

  6. Java使用QRCode.jar生成与解析二维码

    原文V:http://www.cnblogs.com/bigroc/p/7496995.html#3797682 正题:Java使用QRCode.jar生成与解析二维码demo 欢迎新手共勉,大神监督 ...

  7. ZXing 生成、解析二维码图片的小示例

    概述 ZXing 是一个开源 Java 类库用于解析多种格式的 1D/2D 条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME ...

  8. Java使用Zxing生成、解析二维码工具类

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2). ...

  9. C# 生成和解析二维码

    下面是C#和JAVA两个版本的开放源码下载: C#:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library JAVA: ...

随机推荐

  1. JAVA Web day02--- Android小白的第二天学习笔记

    CSS(美工部分知识,了解) 1. CSS概述 1.1.CSS是什么? * CSS 指层叠样式表 样式表:存储样式的地方 层叠:一层一层叠加 高大富有帅气人 1.2.CSS有什么作用? *CSS就是用 ...

  2. 《深入浅出Node.js》第7章 网络编程

    @by Ruth92(转载请注明出处) 第7章 网络编程 Node 只需要几行代码即可构建服务器,无需额外的容器. Node 提供了以下4个模块(适用于服务器端和客户端): net -> TCP ...

  3. 浅谈GPU

    Programmable Graphics Processing Unit(GPU),可编程图形处理单元,可编程图形硬件. 98年NVIDIA的modern GPU研发成功,使用晶体管(transis ...

  4. wordpress导入模板数据

    主题安装完成以后,如果有主题的DEMO数据(xml格式的)的话可以导入,导入后该有的页面与分类文章等等都会有了,这样子会节省很多时间,导入后只需要更改对应的页面与分类就可以了. 导入方法: 1. 在后 ...

  5. socket实现手机连接网络打印机打印pos单

    打印的工具类: public class PrintLine {  String TAG = "xxl";  static String PRINT_IP = "192. ...

  6. SpringMVC,3种不同的URL路由配置方法

    1. 先说说一种比较常见的: <servlet> <servlet-name>theDispatcher</servlet-name> <servlet-cl ...

  7. Hbase的flush机制

    Hbase Flush机制最小Flush单元为HRegion,尽量减少CF数量以减少HStrore数量从而减少MemStore的数量,最终减少每次Flush的开销.1.Region级别触发条件:   ...

  8. 【PKU1001】Exponentiation(高精度乘法)

    Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 145642   Accepted: 35529 ...

  9. Python之路,day10-Python基础

    一.进程进程:一个程序要运行时所需的所有资源的集合 进程是资源的集合,相当于一个车间 一个进程至少需要一个线程,这个线程为主线程 一个进程里可以有多个线程 cpu cores越多,代表着你可以真正并发 ...

  10. 有关vue的总结

    1:使用v-for进行循环渲染: <div v-for="(value, key, index) in object"> {{ index }}. {{ key }} ...