专栏首页闵开慧如何生成二维码过程详解

如何生成二维码过程详解

如何生成二维码过程详解

1 下载zxing2.1,zxing j2se.jar

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

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

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

4 TestEnDeCode.java源代码

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 运行结果:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • sudo: /usr/lib/sudo/sudoers.so must be owned by...

    安装软件时显示 sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0 sudo:...

    闵开慧
  • wordcount.java

    package com.biencloud.test; import java.io.IOException;   import java.uti...

    闵开慧
  • tomcat6.0下找不到jasper-runtime.jar

    今天有点需求,需要用jasper-runtime.jar包。但是我在我的\apache-tomcat-6.0.16\lib目录下,怎么也找不到这个jar包。结果...

    闵开慧
  • java开发_生成/解析自己的QRCode二维码

    在http://www.ostools.net/qr看到了一个生成二维码的工具,于是就产生了一个想法:

    Hongten
  • python调用zxing项目进行二维码

    摘要:首先创建一个java的maven项目,加入zxing相关包,编写二维码相关代码,调试运行,打包;然后创建一个python项目,安装jpype,编写代码把相...

    py3study
  • flash直播

    本文作者:IMWeb ninawu 原文出处:IMWeb社区 未经同意,禁止转载 接触了一段时间的flash直播,无论是腾讯课堂‘数据生成模式’实现的...

    IMWeb前端团队
  • 一文弄清物联网的OTA

    许多嵌入式系统部署在人类操作员很难或无法访问的地方。 对于物联网应用程序来说尤其如此,物联网应用程序通常数量较大,电池寿命有限。 一些例子是监视人或机器健康状况...

    半吊子全栈工匠
  • 简单小妙招,教你快速加字幕!

    每次一到加字幕就头疼,一遍遍地听、对音频、校对,花费的时间太多了。今天做了一个睡眠日的街采视频(见文末),内容比较多(见下图,将近四分钟的视频),确实时间紧迫,...

    半夜喝可乐
  • 福特获批新专利:用无人机替代故障传感器,引领汽车前往维修中心 | 热点

    镁客网
  • Markdown的十个基本标签

    leeqico

扫码关注云+社区

领取腾讯云代金券