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. 分布式blog系统 TFS总结

    解决的问题 文件总量太大  一台服务器无法存放 只能放在网络集群中分节点存放   也就是通过屏蔽网络部分 形成一个“ one big CPU” 和 “one big disk” .Client只需要向 ...

  2. appserver安装常见的问题

    安装过程: 一般下载安装包直接按照步骤安装,不过一次安装好没问题的情况很少. 1.       下载安装包百度搜索appserv 或者到以下网址下载 http://www.appservnetwork ...

  3. 终于在cmd窗口里出现了颜色了!!!感动ing……

    在窗口的中央打印三行字. 要求: 第一行绿色字 第二行绿底红色 第三行白底蓝色 assume cs:code, ds:data data segment db 'welcome to masm!' d ...

  4. Git 基础

    取得项目的 Git 仓库 有两种取得 Git 项目仓库的方法.第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库.第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来. 在工作目录中初 ...

  5. Search for a Range

    Given a sorted array of integers, find the starting and ending position of a given target value. You ...

  6. [课程设计]Scrum 1.7 多鱼点餐系统开发进度

    [课程设计]Scrum 1.7 多鱼点餐系统开发进度(点餐菜式内容添加及美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...

  7. Mysql(一)

    一.Mysql简介 Mysql是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下.特点:其体积小.速度快.开源. 分为社区办和商业版,其社区版性能卓越. 二.Ubun ...

  8. Perl/Nagios – Can’t locate utils.pm in @INC

    While trying to use a Nagios plugin I got an error saying that “Can’t locate utils.pm in @INC”. Foll ...

  9. zeromq:c,c++,golang及nodejs使用

    官网:www.zeromq.org 消息队列比较:http://www.cnblogs.com/charlesblc/p/6058799.html zeromq的一些观点:http://www.cnb ...

  10. CPU利用率异常的分析思路和方法交流探讨

    CPU利用率异常的分析思路和方法交流探讨在生产运行当中,经常会遇到CPU利用率异常或者不符合预期的情况,此时,往往暗示着系统性能问题.那么究竟是核心应用的问题?是监控工具的问题?还是系统.硬件.网络层 ...