首页 > 编程语言 >Java之使用zxing.jar包生成二维码

Java之使用zxing.jar包生成二维码

时间:2023-02-02 10:55:42浏览次数:53  
标签:google Java jar zxing 二维码 import com hints

由于时代科学的进步,二维码已经和我们的生活密不可分,在开发过程中往往会涉及到和二维码相关的开发,今天这篇文章就教会大家如何使用zxing.jar包生成二维码

  下面这个就是百度上面自带的一个生成二维码的功能,那他是怎么实现这个功能的呢?

1.准备工作

1)创建一个maven项目,在pom.xml中导入zxing的依赖包

<dependency>
    <groupId>com.google.zxing</groupId>            
        <artifactId>core</artifactId>
        <version>3.3.3</version>
</dependency>
 <dependency>
    <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>3.3.0</version>
        <exclusions>
            <exclusion>
                <artifactId>core</artifactId>
                <groupId>com.google.zxing</groupId>
            </exclusion>
        </exclusions>
</dependency>
                

2)创建测试类TestController,代码如下

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.google.zxing.client.j2se.MatrixToImageWriter;

@RestController
public class TestController {

    // 生成二维码
    @RequestMapping("/getCode")
    public void getCode(HttpServletResponse response){
        // 二维码内容
        String contents = "http://www.itsource.cn";
        // 表示是二维码
        BarcodeFormat qrCode = BarcodeFormat.QR_CODE;
        // 二维码宽度
        int width = 300;
        // 二维码高度
        int height = 300;
        // 返回的图片格式
        String format = "png";
        response.setContentType("image/png");
        try {
            Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
            // 设置二维码编字符集
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            // 设置二维码的外间距
            hints.put(EncodeHintType.MARGIN, 10);
            // 设置二维码容错级别
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
            // 创建二维码对象
            BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, qrCode, width, height, hints);
            // 输出二维码
            MatrixToImageWriter.writeToStream(bitMatrix, format, response.getOutputStream());
        } catch (WriterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

2.测试二维码功能

启动项目,请求我们所写的测试接口

 

这样我们就完成了一个和百度自带生成二维码的一样的功能

 

标签:google,Java,jar,zxing,二维码,import,com,hints
From: https://www.cnblogs.com/jiangyalin/p/17085249.html

相关文章

  • 车牌识别服务-JAVA+ONNX版本,支持全类型的车牌
    1、车牌识别简介车牌识别分为车牌检测与识别,检测模型一般需要检查车牌的位置识别模型一般为识别车牌号及车牌的颜色类型等,目前有较多的深度学习模型能支持,这里就不详细......
  • java中的自定义枚举类
    自定义枚举类有两种写法 第一种写法:classSeason{privateStringname;//在Season内部,直接创建固定的对象,//优化,可以加入final修饰符pub......
  • 基础认识-Java工具认识
    JDK——JavaDevelopmentKit扩充开发工具,父集JRE——JavaRuntimeEnvironment包含applet,保障Java语句可运行JVM——JavaVirtualMachine模拟CPU(虚拟机)解释型、编译......
  • ELK系列(4) - Elasticsearch cannot write xcontent for unknown value of type class
    问题与分析在使用Elasticsearch进行index数据时,发现报错如下:java.lang.IllegalArgumentException:cannotwritexcontentforunknownvalueoftypeclassjava.math.BigD......
  • Java Socket通信(一)之客户端程序 发送和接收数据
     JavaSocket通信(一)之客户端程序发送和接收数据网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务......
  • Java中Socket 实现最简单的客户端与服务端通信
    Java中Socket实现最简单的客户端与服务端通信引言:因为最近项目中要接入某通信协议接口,基于TCP/IP的socket接口。于是就在本地弄一个最简单的Socket通信仅供学习。话不多......
  • JavaScript 中URL构造函数
    前言URL对于我们开发人员来讲,应该是非常熟悉了。在对URL进行参数拼接时,我们一般都会直接进行字符串拼接或使用模版字符串,因为这样非常方便,但是我们这样其实会在不知不觉......
  • 通过IDEA生成JavaDoc文档
    一.通过IDEA来生成JavaDoc文档:1.创建一个存放JavaDoc的文件夹2.打开IDEA上方工具(Tools),生成JavaDoc文档(GenerateJavaDoc...)//如图一3.选择我们要生成的......
  • 读Java8函数式编程笔记08_测试、调试和重构
    1. Lambda表达式的单元测试1.1. 单元测试是测试一段代码的行为是否符合预期的方式1.2. Lambda表达式没有名字,无法直接在测试代码中调用1.2.1. 将Lambda表达式放入......
  • 方法final参数java8感想
    今天看到Latke的demo里有final的形参,查了一下使用final参数的状态有两种:1.让接收项目的程序员知道这个变量不能修改2.这个参数不能被重新赋值java8中有一种方法引用......