1 下载zxing2.1

2 本代码配置环境:eclipse、java1.6、windows8、zxing2.1

3 解压后将文件夹里面core/src下面的com文件夹导入到eclipse工程(工程可以自己建,如QrCode)中,图示如下:

注意:在源码中需要修改其编码配置为UTF-8,否则后面解码后面的文件中中文会乱码,修改图示如下:

4 TestEnDeCode.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
99
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 运行结果:

windows8运行zxing源码 生成与解码二维码 详解(含注释与图解可直接运行)的更多相关文章

  1. C# 利用ZXing.Net来生成条形码和二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  2. 在Linux终端中快速生成、解码二维码

    我们要实现两个功能: 解码Linux屏幕上的二维码,将结果输出在终端 在终端中将字符串转为二维码,直接显示二维码在终端中以供扫描 实现方法 生成二维码 qrencode是一个常见的生成二维码的CLI程 ...

  3. 转【微信小程序 四】二维码生成/扫描二维码

    原文:https://blog.csdn.net/xbw12138/article/details/75213274 前端 二维码生成 二维码要求:每分钟刷新一次,模拟了个鸡肋,添加了个按分钟显示的时 ...

  4. 主攻ASP.NET.4.5 MVC4.0之重生:二维码生成和谷歌二维码

    使用ThoughtWorks.QRCode.Codec 效果图 using ThoughtWorks.QRCode.Codec; 非原创代码 public void code(string id) { ...

  5. 使用zxing生成和解析二维码

    二维码: 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的: 在代码编制上巧妙的利用构成计算机内部逻辑基础的0和1比特流的概念,使用若干个与二进制相对应的几何 ...

  6. 使用Google提供的ZXing Core,Java生成、解析二维码

    1.maven项目中,pom.xml中引入ZXing Core工具包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core ...

  7. asp.net.web如何简单生成和保存二维码图片的例子

    首先,要有生成二维码图片,需要二维码生成的类库,到官网下载thoughtWorks.QRCode.dll 例子的步骤: 1.创建项目QRCodeTest1,选择asp.net.web窗体应用程序

  8. Java生成、解析二维码

    今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.m ...

  9. java生成和解析二维码

    前言 现在,二维码的应用已经非常广泛,在线生成器也是诸多,随手生成. 所以就和大家分享一个小案例,用zxing来做一个的二维码生成器,当然这个例子是比较简单,若是写的不好请多多包涵. ZXING项目是 ...

随机推荐

  1. python链表的实现,有注释

    class Node():                   #node实现,每个node分为两部分:一部分含有链表元素,成数据域;另一部分为指针,指向下一个  __slots__=['_item' ...

  2. apche commons项目简介 分类: B1_JAVA 2014-06-26 11:27 487人阅读 评论(0) 收藏

    1.apche commons项目封装了日常开发中经常使用的功能,如io, String等. http://commons.apache.org/ Apache Commons项目的由三部分组成: T ...

  3. js进阶 11-15 jquery过滤方法有哪些

    js进阶 11-15  jquery过滤方法有哪些 一.总结 一句话总结:jquery方法中的参数一般是什么:选择器.元素或 jQuery 对象. 1.jquery方法中的参数一般是什么? 选择器.元 ...

  4. C语言学习笔记:12_变量的存储方式和生存期

    /* * 12_变量的存储方式和生存期.c * * Created on: 2015年7月5日 * Author: zhong */ #include <stdio.h> #include ...

  5. JVM 调优 —— OutOfMemory

    零. 简单介绍 OutOfMemory 意思就是须要申请更大的内存, 可是内存限制无法申请到须要的内存. 一. 解决方法 基本上解决方向有两种: 检查程序是否有问题. 是不是写死循环不停地创建并持有对 ...

  6. PathRemoveFileSpec 函数的作用:将路径末尾的文件名和反斜杠去掉(与GetModuleFileName配合)

    PathRemoveFileSpec 函数的作用:将路径末尾的文件名和反斜杠去掉. 例如,我们想获取EXE文件自身所在的文件夹,可以这样: #include <stdio.h> #incl ...

  7. 【t062】最厉害的机器人

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] [背景] Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ [问题描述] ...

  8. c++11之初始化列表

    一.前言     C++的学习中.我想每一个人都被变量定义和申明折磨过,比方我在大学笔试过的几家公司.都考察了const和变量,类型的不同排列组合,让你差别有啥不同.反正在学习C++过程中已经被折磨惯 ...

  9. [SVG] Optimize SVGs for Better Performance using svgo

    Just like a bitmap image, you can compress an SVG by removing various pieces of code that aren’t nec ...

  10. Tomcat启动失败问题解决

    1. 系统框架加载正常,但是Tomcat启动失败,报错如下: 2013-7-26 17:18:33 org.apache.catalina.core.StandardContext startInte ...