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. ms08_067利用过程

    进入msf. show exploits. use exploit/windows/smb/ms08_067_netapi. show playloads. set PLAYLOAD windows/ ...

  2. POJ 2155 Matrix(二维树状数组)

    与以往不同的是,这个树状数组是二维的,仅此而已 #include <iostream> #include <cstdio> #include <cstring> # ...

  3. PAT (Advanced Level) 1056. Mice and Rice (25)

    简单模拟. #include<iostream> #include<cstring> #include<cmath> #include<algorithm&g ...

  4. CSS中绝对定位依据谁进行定位?

    结论 绝对定位的top等的依据元素需满足3个条件: 已定位(position:relative/fixed/absolute) 最近的 祖辈元素(一定是祖辈元素不是同辈元素) 说明 一般会为body设 ...

  5. fn标签

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

  6. Myeclipse添加struts2支持后取消操作

    Myeclipse添加struts包后, 想重新加载的方法: 1. myelicpse,右键项目,选close project 2. 找到项目所在目录, 打开.classpath删除带有struts2 ...

  7. php 自动发送邮件的实现

    原文: http://www.cnblogs.com/zichi/p/4058055.html http://www.jb51.net/article/32479.htm 效果: 访问: test.p ...

  8. panel的autoscroll属性不起作用

    已经设置panel的autoscroll属性为true,而且panel内 的控件也达到了应该滚动的地步,但是就是不见滚动条.这是为什么呢? 原因就是richtextbox的anchor属性设置了bot ...

  9. CSS——z-index

    1.特性 ①z-index的值表示谁压着谁.值大的压住值小的. ②只有定位的元素才有z-index 值,也就是说,浮动不可以,相对定位,绝对定位,固定定位都可以. ③z-index值没有单位,是一个正 ...

  10. Ibatis自动生成dao sqlmapper文件和domain文件过程

    generator自动生成mybatis的xml配置.model.map等信息: 1.下载mybatis-generator-core-1.3.2.jar包.        网址:http://cod ...