1 Downloads zxing2.1
2 This Code configuration environment: Eclipse, java1.6, Windows8, zxing2.1
3 after extracting the folder inside Core/src the following COM folder into the Eclipse project (the project can be built on its own, such as QRCode), pictured below:
Note: In the source code needs to modify its encoding configuration to UTF-8, or later decoding the following files in Chinese will be garbled, modify the diagram as follows:
4 Testendecode.java Source Code
?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 66676869707172737475767778798081828384858687888990919293949596979899 |
package test;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Scanner;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.Reader;
import com.google.zxing.ReaderException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
public class TestEnDeCode {
/**
*
*/
public TestEnDeCode() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
TestEnDeCode t=
new TestEnDeCode();
Scanner in =
new Scanner(System.in);
System.out.println(
"编码内容:"
);
String str = in.next();
// String str = "http://www.baidu.com";
String path =
"D:/Qr_pics/test7.png"
;
t.encode(str, path);
t.decode(path);
}
/*
* 编码:
* 1 将内容转换成二维矩阵
* 2 将该二维矩阵转换成图片
* */
public void encode(String str, String path) {
try {
// String str = "http://www.baidu.com百度看看";// 二维码内容
// String path = "D:/Qr_pics/test7.png"; //二维码图片生成 路径及名称
BitMatrix byteMatrix;
byteMatrix =
new MultiFormatWriter().encode(
new String(str.getBytes(
"UTF-8"
),
"UTF-8"
), BarcodeFormat.QR_CODE,
800
,
800
);
//将文字转换成二维矩阵,并设置矩阵大小,这里的矩阵大小就是后面生成的图片像素大小
File file =
new File(path);
//新建矩阵文件 MatrixToImageWriter.writeToFile(byteMatrix,
"gif"
, file);
//将矩阵文件转换成图片文件
}
catch (Exception e) {
e.printStackTrace();
}
}
/*
* 解码:
* 1 将图片反解码为二维矩阵
* 2 将该二维矩阵解码为内容
* */
public void decode(String imgPath) {
try {
Reader reader =
new MultiFormatReader();
// String imgPath = "D:/Qr_pics/test7.png";//获取即将被解码图片的路径
File file =
new File(imgPath);
//获取该图片文件
BufferedImage image;
try {
image = ImageIO.read(file);
if (image ==
null
) {
System.out.println(
"Could not decode image"
);
}
LuminanceSource source =
new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap =
new BinaryBitmap(
new HybridBinarizer(source));
Result result;
Hashtable hints =
new Hashtable();
//将图片反解码为二维矩阵
hints.put(DecodeHintType.CHARACTER_SET,
"UTF-8"
);
result =
new MultiFormatReader().decode(bitmap, hints);
//将该二维矩阵解码成内容
String resultStr = result.getText();
System.out.println(
"\n解码结果:\n"
+resultStr);
}
catch (IOException ioe) {
System.out.println(ioe.toString());
}
catch (ReaderException re) {
System.out.println(re.toString());
}
}
catch (Exception ex) {
System.out.println(ex.toString());
}
}
}
|
5 Operation Result:
Windows8 run zxing source code generation and decoding two-dimensional code detailed (including annotations and illustrations can be run directly)