服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - Java实现的生成二维码和解析二维码URL操作示例

Java实现的生成二维码和解析二维码URL操作示例

2021-05-17 14:22Rest探路者 Java教程

这篇文章主要介绍了Java实现的生成二维码和解析二维码URL操作,结合实例形式分析了Java创建与解析二维码,以及文件读写等相关操作技巧,需要的朋友可以参考下

本文实例讲述了java实现的生成二维码和解析二维码url操作。分享给大家供大家参考,具体如下:

二维码依赖jar包,zxing

?
1
2
3
4
5
6
<!-- 二维码依赖 start -->
<dependency>
  <groupid>com.google.zxing</groupid>
  <artifactid>javase</artifactid>
  <version>3.0.0</version>
</dependency>

createqrcode生成二维码,anlysisqrcode解析二维码

?
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
package com.xgt.util;
import com.google.zxing.*;
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;
import com.google.zxing.qrcode.decoder.errorcorrectionlevel;
import org.apache.commons.io.ioutils;
import org.slf4j.logger;
import org.slf4j.loggerfactory;
import sun.misc.base64encoder;
import javax.imageio.imageio;
import java.awt.image.bufferedimage;
import java.io.*;
import java.nio.file.path;
import java.util.hashtable;
public class qrcodeutil {
  private static final logger logger = loggerfactory.getlogger(qrcodeutil.class);
  /**
   * 创建二维码
   * @param url
   * @param filename
   * @return
   * @throws ioexception
   */
  public static string createqrcode(string url,string filedirectory,string filename) throws ioexception {
    int width = 500;
    int height = 500;
    string format = "png";
    hashtable hints = new hashtable();
    hints.put(encodehinttype.character_set, "utf-8");
    hints.put(encodehinttype.error_correction, errorcorrectionlevel.m);
    hints.put(encodehinttype.margin, 2);
    try {
      bitmatrix bitmatrix = new multiformatwriter().encode(url, barcodeformat.qr_code, width, height, hints);
      file filedir = new file(filedirectory);
      filetoolutil.judedirexists(filedir);
      path file = new file(filedirectory,filename+".png").topath();//在d盘生成二维码图片
      matrixtoimagewriter.writetopath(bitmatrix, format, file);
      bufferedimage image = matrixtoimagewriter.tobufferedimage(bitmatrix);
      bytearrayoutputstream os = new bytearrayoutputstream();//新建流。
      imageio.write(image, format, os);//利用imageio类提供的write方法,将bi以png图片的数据模式写入流。
      byte b[] = os.tobytearray();//从流中获取数据数组。
      string str = new base64encoder().encode(b);
      ioutils.closequietly(os);
      return str;
    } catch (exception e) {
      // todo auto-generated catch block
      e.printstacktrace();
    }finally {
      //deletefileutil.delete(filedirectory);
    }
    return "null";
  }
  /**
   * 解析出二维码的url
   * 无用
   * @param file
   * @param filedirectory
   * @throws notfoundexception
   */
  public static void anlaysisqrcode(file file,string filedirectory) throws notfoundexception {
    multiformatreader formatreader=new multiformatreader();
    bufferedimage image=null;
    try {
      image = imageio.read(file);
    binarybitmap binarybitmap =new binarybitmap(new hybridbinarizer(new bufferedimageluminancesource(image)));
    hashtable hints=new hashtable();
    hints.put(encodehinttype.character_set, "utf-8");
    result result=formatreader.decode(binarybitmap,hints);
    logger.info("解析结果:"+result.tostring());
    logger.info("解析格式:"+result.getbarcodeformat());
    } catch (ioexception e) {
      // todo auto-generated catch block
      e.printstacktrace();
    }finally {
      deletefileutil.delete(filedirectory);
    }
  }
}

希望本文所述对大家java程序设计有所帮助。

原文链接:http://www.cnblogs.com/Java-Starter/p/9283513.html

延伸 · 阅读

精彩推荐
  • Java教程WebDriver中实现对特定的Web区域截图方法

    WebDriver中实现对特定的Web区域截图方法

    这篇文章主要介绍了WebDriver中实现对特定的Web区域截图方法,本文直接给出实现代码,需要的朋友可以参考下 ...

    junjie4542019-12-21
  • Java教程Java中的Vector和ArrayList区别及比较

    Java中的Vector和ArrayList区别及比较

    这篇文章主要介绍了Java中的Vector和ArrayList区别及比较,本文从API、同步、数据增长、使用模式4个方面总结了它们之间的不同之处,需要的朋友可以参考下 ...

    junjie3802019-12-14
  • Java教程图文详解Java中class的初始化顺序

    图文详解Java中class的初始化顺序

    网上有很多关于Java中class的初始化顺序文章,但是本文通过图文更加详细的介绍了Java中class的初始化顺序,并对class的装载顺序进行了讲解,下面一起来看...

    晓来谁听风雨声1712020-06-04
  • Java教程Java 中 synchronized的用法详解(四种用法)

    Java 中 synchronized的用法详解(四种用法)

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。本文给大家介绍java中 synchronized的...

    mrr4782020-01-16
  • Java教程2021 年 Java 开发者生产力报告

    2021 年 Java 开发者生产力报告

    Java 开发工具 JRebel 和 XRebel 的开发商——Perforce 最近公布了其第九份年度全球 Java 开发者生产力报告,该报告基于对 850 多位 Java 开发者的调查而得出。...

    开源中国4342021-02-24
  • Java教程java NIO 详解

    java NIO 详解

    Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。 ...

    hebedich4832019-12-03
  • Java教程Java反射中java.beans包学习总结

    Java反射中java.beans包学习总结

    本篇文章通过学习Java反射中java.beans包,把知识点做了总结,并把相关内容做了关联,对此有需要的朋友可以学习参考下。...

    若鱼191911222021-04-06
  • Java教程java 线程锁详细介绍及实例代码

    java 线程锁详细介绍及实例代码

    这篇文章主要介绍了java 线程锁详细介绍及实例代码的相关资料,需要的朋友可以参考下...

    JAVA之家2842020-07-19