博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何生成二维码代码详解
阅读量:4036 次
发布时间:2019-05-24

本文共 3018 字,大约阅读时间需要 10 分钟。

如何生成二维码代码详解,具体实现可以查看原文http://my.oschina.net/mkh/blog/151633

1. [代码][Java]代码       

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
    
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());
            
}
        
}
        
    
}

转载地址:http://vyjdi.baihongyu.com/

你可能感兴趣的文章
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
从头开始学习JSP(3)——一些配置
查看>>
html常用标签快速检索
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
通过/proc/PID/status查看进程内存占用情况
查看>>
/proc文件系统读出来的数据是最新的吗?
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
python单元测试unittest学习
查看>>
Errors running builder 'Validation' on project 'jumi_3.0'
查看>>
SpringMVC学习笔记
查看>>