如何生成二维码过程详解

如何生成二维码过程详解

1 下载zxing2.1

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

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

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

4 TestEnDeCode.java源代码

 1 package test;
 2     import java.awt.image.BufferedImage;
 3     import java.io.File;
 4     import java.io.IOException;
 5     import java.util.Hashtable;
 6     import java.util.Scanner;
 7     import javax.imageio.ImageIO;
 8     import com.google.zxing.BarcodeFormat;
 9     import com.google.zxing.BinaryBitmap;
10     import com.google.zxing.DecodeHintType;
11     import com.google.zxing.LuminanceSource;
12     import com.google.zxing.MultiFormatReader;
13     import com.google.zxing.MultiFormatWriter;
14     import com.google.zxing.Reader;
15     import com.google.zxing.ReaderException;
16     import com.google.zxing.Result;
17     import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
18     import com.google.zxing.client.j2se.MatrixToImageWriter;
19     import com.google.zxing.common.BitMatrix;
20     import com.google.zxing.common.HybridBinarizer;
21
22     public class TestEnDeCode {
23
24         /**
25          *
26          */
27         public TestEnDeCode() {
28             // TODO Auto-generated constructor stub
29         }
30
31         /**
32          * @param args
33          */
34         public static void main(String[] args) {
35             TestEnDeCode t=new TestEnDeCode();
36             Scanner in = new Scanner(System.in);
37             System.out.println("编码内容:");
38             String str = in.next();
39 //            String str = "http://www.baidu.com";
40             String path = "D:/Qr_pics/test7.png";
41             t.encode(str, path);
42             t.decode(path);
43         }
44
45         /*
46          * 编码:
47          * 1 将内容转换成二维矩阵
48          * 2 将该二维矩阵转换成图片
49          * */
50         public void encode(String str, String path) {
51             try {
52 //                String str = "http://www.baidu.com百度看看";// 二维码内容
53 //                String path = "D:/Qr_pics/test7.png"; //二维码图片生成 路径及名称
54                 BitMatrix byteMatrix;
55                 byteMatrix = new MultiFormatWriter().encode(new String(str.getBytes("UTF-8"),"UTF-8"), BarcodeFormat.QR_CODE, 800, 800); //将文字转换成二维矩阵,并设置矩阵大小,这里的矩阵大小就是后面生成的图片像素大小
56                 File file = new File(path);//新建矩阵文件
57                 MatrixToImageWriter.writeToFile(byteMatrix, "gif", file);//将矩阵文件转换成图片文件
58             } catch (Exception e) {
59                 e.printStackTrace();
60             }
61         }
62
63         /*
64          * 解码:
65          * 1 将图片反解码为二维矩阵
66          * 2 将该二维矩阵解码为内容
67          * */
68         public void decode(String imgPath) {
69             try {
70                 Reader reader = new MultiFormatReader();
71 //                String imgPath = "D:/Qr_pics/test7.png";//获取即将被解码图片的路径
72                 File file = new File(imgPath);//获取该图片文件
73                 BufferedImage image;
74                 try {
75                     image = ImageIO.read(file);
76                     if (image == null) {
77                         System.out.println("Could not decode image");
78                     }
79                     LuminanceSource source = new BufferedImageLuminanceSource(image);
80                     BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
81                     Result result;
82                     Hashtable hints = new Hashtable();//将图片反解码为二维矩阵
83                     hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
84                     result = new MultiFormatReader().decode(bitmap, hints);//将该二维矩阵解码成内容
85                     String resultStr = result.getText();
86                     System.out.println("\n解码结果:\n"+resultStr);
87
88                 } catch (IOException ioe) {
89                     System.out.println(ioe.toString());
90                 } catch (ReaderException re) {
91                     System.out.println(re.toString());
92                 }
93
94             } catch (Exception ex) {
95                 System.out.println(ex.toString());
96             }
97         }
98
99     }

5 运行结果:

6 生成的二维码如下图所示:

原创文章转载请注明出处

Java自学之道完整版 开源中国 下载地址: http://www.oschina.net/news/42748/java-self-study-guide

Java自学之道完整版 CSDN 下载地址: http://download.csdn.net/detail/longdeyun/5839581

个人QQ已加满,可加Java自学之道技术分享及经验交流群:301318062

Java、hadoop、spark相关技术共享交流群:287683381

时间: 2024-10-10 23:48:51

如何生成二维码过程详解的相关文章

python三步生成二维码

本次使用python 2.7.13 下 安装qrcode模块三步生成二维码; qcrode官方说明https://pypi.python.org/pypi/qrcode/ qcrode模块通过pip install qrcode 安装即可 pip命令没有请参照http://dyc2005.blog.51cto.com/270872/1940870安装 以下是生成二维码过程: 代码如下: import qrcode mk = qrcode.make("http://www.pkey.cn"

C#如何生成二维码详解(含解码)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; using com.google.zxing;//需要从网上下载 using S

iOS中 扫描二维码/生成二维码详解 韩俊强的博客

最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 指示根视图: self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:[SecondViewController new]]; 每日更新关注:http://weibo.com/hanjunqi

Android实例-实现扫描二维码并生成二维码(XE8+小米5)

相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: 过几天,刚上传的包,都没有办法显示. 注意事项: 如果只加了Lib,然没有改AndroidManifest.xml,App在呼叫BarCode时会ANR没反应.开始可能没有官方的classes.dex,但如果发现编译出错后,请再检查一下.TMessageManager须加System.Messaging单元. 使用DelphiXE7加入JavaLibrary后,呼叫Zxing相机1.新建一个DelphiXE工程,双

java实现生成二维码

                                                     java实现生成二维码 二维码vs条形码 最大的区别就是:二维码具有容错功能,当二维码图片被遮挡一部分后,仍可以扫描出来.容错的原理是二维码在编码过程中进行了冗余,就像是123被编码成123123,这样只要扫描到一部分二维码图片,二维码内容还是可以被全部读到. 二维码容错率即是指二维码图标被遮挡多少后,仍可以被扫描出来的能力.容错率越高,则二维码图片能被遮挡的部分越多. 二维码容错率用字母表

C#生成二维码名片

摘自<31天学会CRM项目开发<C#编程入门级项目实战>> 本例将使用ThoughtWorks.QRCode类库生成二维码名片.正式编码前,先了解一下什么是vCard?它是一种用于定义电子名片的标准或规范.手机通信录可导出vCard格式.片段21-15是一段vCard格式的文本,从数据结构上看并不复杂,按照格式填充相关信息,以二维码方式输出. BEGIN:VCARD FN:张三 TITLE:技术总监 ORG:青岛**软件有限公司;ERP事业部 TEL;CELL:1860532777

ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老美开发的,barcode4j对一维条形码处理的很好,而且支持的格式很多,当然也可以对二维码进行处理,效果个人感觉没有前两种好;ZXing对j2me,j2se,还有Android等支持也比较好,如果你是搞Android的或以后准备走Android,建议还是用zxing的比较好,毕竟都一个母亲(goole)生的,QRCode就不用说了吧,虽说技术无国界,但是国人还是有点.... 好,言归正传,java用ZXi

java 生成 二维码 和jquery 生成二维码

生成二维码 Java 生成二维码: 思路为拿到jar 包知道里面的方法使用 Step one : 在https://github.com/zxing中下载(点击网页中名为 zxing 的a标签,跳转到源码页面,点击release 查看所有发布的源码,下载zip压缩文件 Step two:  解压文件后打开文件夹,将core包和javase包 中的com包拷贝到一java项目src目录下.右键导出 jar file  得到一个二维码开发的jar包 Step three: 进行二维码制作 impor

Thinkphp3.2结合phpqrcode生成二维码(含Logo的二维码),附案例

首先,下载phpqrcode,将其解压到项目ThinkPHP\Library\Vendor目录下.Index_index.html(模板可自行配置) <form action="{:U('index/index')}" enctype="multipart/form-data" method = "post"> <b>尺寸大小:</b> <input type="text" name