http://www.ostools.net/qr看到了一个生成二维码的工具,于是就产生了一个想法:

为什么自己不做一个二维码的生成和解析工具呢?花了一个多钟的时间,嘿嘿,就做出来啦...

先来看看效果图吧:

CODE_QR:

 CODE_128:        

PDF_417:

二维码的意思是:

下面是操作步骤:

一:下载zxing的压缩包:

可以到这里下载:http://code.google.com/p/zxing/downloads/list

ZXing-2.1.zip:http://code.google.com/p/zxing/downloads/detail?name=ZXing-2.1.zip&can=2&q=

得到:

zxing-2.1\core\core.jar

zxing-2.1\javase\javase.jar

二:把他添加进入你的项目的里面:

/QRCodes/src/com/b510/qrcode/QRCode.java

  1 /**
2 *
3 */
4 package com.b510.qrcode;
5
6 import java.awt.image.BufferedImage;
7 import java.io.File;
8 import java.io.IOException;
9 import java.util.Hashtable;
10 import java.util.Map;
11
12 import javax.imageio.ImageIO;
13
14 import com.google.zxing.BarcodeFormat;
15 import com.google.zxing.BinaryBitmap;
16 import com.google.zxing.DecodeHintType;
17 import com.google.zxing.EncodeHintType;
18 import com.google.zxing.LuminanceSource;
19 import com.google.zxing.MultiFormatReader;
20 import com.google.zxing.MultiFormatWriter;
21 import com.google.zxing.ReaderException;
22 import com.google.zxing.Result;
23 import com.google.zxing.Writer;
24 import com.google.zxing.WriterException;
25 import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
26 import com.google.zxing.common.BitMatrix;
27 import com.google.zxing.common.HybridBinarizer;
28 import com.google.zxing.oned.CodaBarWriter;
29 import com.google.zxing.oned.Code128Writer;
30 import com.google.zxing.oned.Code39Writer;
31 import com.google.zxing.oned.EAN13Writer;
32 import com.google.zxing.oned.EAN8Writer;
33 import com.google.zxing.oned.ITFWriter;
34 import com.google.zxing.oned.UPCAWriter;
35 import com.google.zxing.pdf417.encoder.PDF417Writer;
36 import com.google.zxing.qrcode.QRCodeWriter;
37
38 /**
39 * 利用zxing开源工具生成二维码QRCode
40 *
41 * @date 2012-10-26
42 * @author xhw
43 *
44 */
45 public class QRCode {
46 private static final int BLACK = 0xff000000;
47 private static final int WHITE = 0xFFFFFFFF;
48
49 /**
50 * @param args
51 */
52 public static void main(String[] args) {
53 QRCode test = new QRCode();
54 File file = new File("C://test.png");
55 /**
56 * 在com.google.zxing.MultiFormatWriter类中,定义了一些我们不知道的码,二维码只是其中的一种<br>
57 * public BitMatrix encode(String contents,
58 BarcodeFormat format,
59 int width, int height,
60 Map<EncodeHintType,?> hints) throws WriterException {
61 Writer writer;
62 switch (format) {
63 case EAN_8:
64 writer = new EAN8Writer();
65 break;
66 case EAN_13:
67 writer = new EAN13Writer();
68 break;
69 case UPC_A:
70 writer = new UPCAWriter();
71 break;
72 case QR_CODE: //这里是二维码
73 writer = new QRCodeWriter();
74 break;
75 case CODE_39:
76 writer = new Code39Writer();
77 break;
78 case CODE_128: //这个可以生成
79 writer = new Code128Writer();
80 break;
81 case ITF:
82 writer = new ITFWriter();
83 break;
84 case PDF_417: //这个可以生成
85 writer = new PDF417Writer();
86 break;
87 case CODABAR:
88 writer = new CodaBarWriter();
89 break;
90 default:
91 throw new IllegalArgumentException("No encoder available for format " + format);
92 }
93 return writer.encode(contents, format, width, height, hints);
94 }
95
96 */
97 test.encode("helloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongten", file, BarcodeFormat.QR_CODE, 200, 200, null);
98 test.decode(file);
99 }
100
101 /**
102 * 生成QRCode二维码<br>
103 * 在编码时需要将com.google.zxing.qrcode.encoder.Encoder.java中的<br>
104 * static final String DEFAULT_BYTE_MODE_ENCODING = "ISO8859-1";<br>
105 * 修改为UTF-8,否则中文编译后解析不了<br>
106 */
107 public void encode(String contents, File file, BarcodeFormat format, int width, int height, Map<EncodeHintType, ?> hints) {
108 try {
//消除乱码
          contents = new String(contents.getBytes("UTF-8"), "ISO-8859-1"); 
109 BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, format, width, height);
110 writeToFile(bitMatrix, "png", file);
111 } catch (Exception e) {
112 e.printStackTrace();
113 }
114 }
115
116 /**
117 * 生成二维码图片<br>
118 *
119 * @param matrix
120 * @param format
121 * 图片格式
122 * @param file
123 * 生成二维码图片位置
124 * @throws IOException
125 */
126 public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
127 BufferedImage image = toBufferedImage(matrix);
128 ImageIO.write(image, format, file);
129 }
130
131 /**
132 * 生成二维码内容<br>
133 *
134 * @param matrix
135 * @return
136 */
137 public static BufferedImage toBufferedImage(BitMatrix matrix) {
138 int width = matrix.getWidth();
139 int height = matrix.getHeight();
140 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
141 for (int x = 0; x < width; x++) {
142 for (int y = 0; y < height; y++) {
143 image.setRGB(x, y, matrix.get(x, y) == true ? BLACK : WHITE);
144 }
145 }
146 return image;
147 }
148
149 /**
150 * 解析QRCode二维码
151 */
152 @SuppressWarnings("unchecked")
153 public void decode(File file) {
154 try {
155 BufferedImage image;
156 try {
157 image = ImageIO.read(file);
158 if (image == null) {
159 System.out.println("Could not decode image");
160 }
161 LuminanceSource source = new BufferedImageLuminanceSource(image);
162 BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
163 Result result;
164 @SuppressWarnings("rawtypes")
165 Hashtable hints = new Hashtable();
166 //解码设置编码方式为:utf-8
167 hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
168 result = new MultiFormatReader().decode(bitmap, hints);
169 String resultStr = result.getText();
170 System.out.println("解析后内容:" + resultStr);
171 } catch (IOException ioe) {
172 System.out.println(ioe.toString());
173 } catch (ReaderException re) {
174 System.out.println(re.toString());
175 }
176 } catch (Exception ex) {
177 System.out.println(ex.toString());
178 }
179 }
180 }

是不是很简单.....

源码下载:http://files.cnblogs.com/hongten/QRCodes.rar

java 二维码的更多相关文章

  1. Atitit java 二维码识别 图片识别

    Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...

  2. java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例

    java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍   我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...

  3. Java二维码生成与解码

      基于google zxing 的Java二维码生成与解码   一.添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包) <!-- google二维码工具 --> &l ...

  4. [转]java二维码生成与解析代码实现

    转载地址:点击打开链接 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大 ...

  5. java二维码生成与解析代码实现

    TwoDimensionCode类:二维码操作核心类 package qrcode; import java.awt.Color; import java.awt.Graphics2D; import ...

  6. Java二维码登录流程实现(包含短地址生成,含部分代码)

    近年来,二维码的使用越来越风生水起,笔者最近手头也遇到了一个需要使用二维码扫码登录网站的活,所以研究了一下这一套机制,并用代码实现了整个流程,接下来就和大家聊聊二维码登录及的那些事儿. 二维码原理 二 ...

  7. java二维码开发

    之前就写过很多关于二维码的东西,一直没有时间整理一下,所以呢今天就先来介绍一下如何利用java开发二维码.生成二维码有很多jar包可以实现,例如Zxing,QRcode,前者是谷歌的,后者日本的,这里 ...

  8. java二维码生成

    import java.io.File; import java.nio.file.Path; import java.util.HashMap; import com.google.zxing.Ba ...

  9. java二维码生成代码

    QRCodeUtil.encode(text, "D:/004.jpg", "D:", true, "exp");// 这个方法的第一个参数 ...

随机推荐

  1. ZOJ3944People Counting<暴力/枚举>

    题意:输入一张照片,给出人物的特征,判断有多少个人. .O. /|\ (.) 思路:按照3*3的图统计,只要有一个点符合就加1 #include<cstdio> #include<i ...

  2. Android平台中实现对XML的三种解析方式

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

  3. kali系统安装

    kali live 安装到U盘 http://www.backtrack.org.cn/thread-17197-1-1.html 用Live U盘安装Kali Linux http://cn.doc ...

  4. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  5. docker k8s 1.3.8 + flannel

    docker k8s + flannel kubernetes 是谷歌开源的 docker 集群管理解决方案. 项目地址: http://kubernetes.io/ 测试环境: node-1: 10 ...

  6. git第一篇---基本命令

    摘要: (1)用git而不是svn.分布式而不是集中式 (2)名词解释 origin是父目录的意思,master是 一个特殊的分支而已.具体参看做最下边: 1.创建仓库 mkdir git cd gi ...

  7. ural1523 K-inversions

    K-inversions Time limit: 1.0 secondMemory limit: 64 MB Consider a permutation a1, a2, …, an (all ai  ...

  8. Counting Haybales

    Counting Haybales 题目描述 Farmer John is trying to hire contractors to help rearrange his farm, but so ...

  9. docker固定IP地址重启不变

    docker固定IP地址重启不变 代码地址 https://github.com/lioncui/docker-static-ip 宿主机IP为  10.6.17.12 docker IP为 10.6 ...

  10. iOS多视图传值方式之通知传值(NSNotification;NSNotificationCenter)

    iOS传值方式之5:通知传值 第一需要发布的消息,再创建NSNotification通知对象,然后通过NSNotificationCenter通知中心发布消息(NSNotificationCenter ...