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. Linux的课程总结

    Linux的课程总结 20125133 马国祥 通过16周的学习明白学好linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期,由于在linux中,用户权限很大,做任何事情都很自由,所以 ...

  2. capwap DTSL 加密分析

    1.概述 DTLS即Datagram Transport Layer Security (RFC4347),AP加入AC前,先进行DTLS验证,当AP与AC之间的DTLS握手成功后,AP发出Join请 ...

  3. WWDC 2014 发布会 Keynote 视频下载 3.6G 1080P地址

    我费尽九牛二虎之力,终于可以下载这个1080P高清的视频了,话说今天凌晨我是看的图文直播,现在终于有视频了,大家会不会很激动啊,好废话不多说,我把下载地址发给大家! 百度云:http://pan.ba ...

  4. 暑假前的flag

    暑假到了,为了简便新开了一个博客,供暑假刷体放一些题解,玩acm1年多了,cf还是蓝名,真是菜的一笔,明年就大三了,马上就要毕业了,然而还是啥也不会,兼职和智障没什么两样,当初大一吹的牛逼说要成为学校 ...

  5. JavaScript知识点

    Day 01 1.Javascript 概述 1.什么是Javascript (JS) Javascript 是一种运行于 JS解释器/引擎 中的解释型脚本语言 JS解释器/引擎 :JS运行环境 1. ...

  6. https/相对路径,绝对路径

    1. htttps HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...

  7. o-sync-and-o-direct

    https://lwn.net/Articles/457667/ https://lwn.net/Articles/457667/ https://lwn.net/Articles/457667/ h ...

  8. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]

    目录 [TOC] 1.CDH介绍 1.1.什么是CDH和CM? CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装. Cloudera-Ma ...

  9. C++ 数字转字符串

    #include <sstream> string num2str( int i) { stringstream ss; ss<<i; return ss.strs(); }

  10. Centos下安装和配置SVN

    1.安装SVN服务 #检查现有版本 rpm -qa subversion #如果存储旧版本,卸载旧版本SVN yum remove subversion #安装SVN yum install subv ...