Java中生成二维码

代码如下:


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 javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class QR_java {
    //这是main方法,程序的入口
    public static void main(String[] args) throws WriterException, IOException {
        //1.利用Zxing.jar里面提供的一个工具类来帮我生成码:
        //2,创建工具类的对象:---》m
        MultiFormatWriter m = new MultiFormatWriter();
        //3.利用m对象来创建二维码:--》动作---》方法:
        /*
        想要使用encode()需要传入5个参数:
        String var1, BarcodeFormat var2, int var3, int var4, Map<EncodeHintType, ?> var5
        String var1 : 内容
        BarcodeFormat var2 : 告知你想画一维码还是二维码
        int var3 : 接收二维码的宽
        int var4 :接收二维码的高
        Map<EncodeHintType, ?> var5 :存放键值对
        二维码的其他信息:
         */
        //内容
        String str = "春风万里";
        //告知你想画一维码还是二维码:
        BarcodeFormat b = BarcodeFormat.QR_CODE; //二维码
        //定义二维码的宽,高:
        int width = 500;
        int height = 500;
        /*
        二维码的其他信息:
        (1)纠错能力 :
        L low  7%
        M middle  15%
        Q quartered  25%
        H high 30%
        (2)设置编码
        (3)设置留白:
         */
        Map map = new HashMap();
        map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
        map.put(EncodeHintType.CHARACTER_SET,"UTF-8");
        map.put(EncodeHintType.MARGIN,2);
        //调用方法,传入5个参数:
        BitMatrix encode = m.encode(str, b, width, height, map);//encode代表的是二维码的对象 --》内存

        //encode代表的是二维码的对象 --》内存 ---->转成图片对象
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
        //就是将二维码对象中的有效数据展示出来:
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                image.setRGB(x,y,encode.get(x,y)? Color.WHITE.getRGB():Color.BLACK.getRGB());
            }
        }

        //图片对象 ---> 在内存:--》写入硬盘:
        File file = new File("测试.png");
        //将image对象以png后缀写入file中去:
        boolean flag = ImageIO.write(image, "png", file);
        //根据flag进行后续的判断:
        if (flag){
            System.out.println("二维码生成成功!");
        }else{
            System.out.println("二维码生成失败!");
        }
    }
}

原文链接:https://www.cnblogs.com/runweitian/p/17326052.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中生成二维码 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • SpringBoot实现钉钉机器人消息推送的示例代码

    下面是 Spring Boot 实现钉钉机器人消息推送的完整攻略。 1. 准备工作 在开始之前,需要完成以下几个步骤: 在钉钉工作台上创建一个自定义机器人。 获取钉钉机器人的 Webhook 值。 2. 新建 Spring Boot 项目 使用 Spring Initializr 创建一个新的 Spring Boot 项目。在这个项目中,我们需要引入以下依赖…

    Java 2023年6月1日
    00
  • java如何使用自己的maven本地仓库详解

    下面是详细的讲解: 一、什么是Maven本地仓库? Maven本地仓库就是Maven自己的仓库,是用于存储Maven项目所需要的jar包、插件和其他依赖的本地仓库。一般情况下,我们使用Maven构建Java项目时会从Maven中央仓库或者私有仓库下载依赖,但是有时候我们需要自己编写的依赖或者其他第三方依赖没有在中央仓库或私有仓库中,那么我们就需要使用自己的本…

    Java 2023年5月20日
    00
  • 详细解读Java的串口编程

    详细解读Java的串口编程 什么是串口 串口是一种计算机外部设备与计算机通信的接口标准,它通过串口线连接计算机和设备,在数据传输时通过线上的电压变化来进行信息传递。 Java中实现串口编程 导入rxtxcomm.jar和win32com.dll两个文件,这两个文件提供了Java访问串口的接口。在导入了这两个文件之后,就可以在Java程序中访问串口了。 使用S…

    Java 2023年5月26日
    00
  • Java中常用的6种排序算法详细分解

    Java中常用的6种排序算法详细分解 在Java中,常用的排序算法主要有六种:冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序。下面将详细讲解这六种算法的原理和实现过程。 冒泡排序 冒泡排序是一种简单的排序算法,它的原理是通过重复地遍历要排序的列表,每遍历一次就把相邻的两个元素比较大小并交换位置。具体实现过程如下: public static vo…

    Java 2023年5月19日
    00
  • idea maven 经常主目录自动变回默认的解决方法

    我来为您详细讲解如何解决“idea maven 经常主目录自动变回默认”的问题。 问题描述 在使用 IDEA 开发过程中,我们通常会使用 Maven 进行项目构建和管理。然而,有的时候我们会发现 IDEA 的 Maven 主目录经常会自动变回默认值,并且有时修改也无法生效,这会给我们带来一定的困扰。 解决方法 方法一:修改配置文件 第一种解决方法较为简单,我…

    Java 2023年5月19日
    00
  • Maven导入依赖时爆红的几种解决方法

    当我们在Maven项目中导入依赖时,可能会遇到一些问题,例如依赖库的版本不兼容、缺少必需的依赖库等等,会导致IDE(例如Eclipse或IDEA)在pom.xml中将有关依赖项部分标记为红色。这时候需要我们采取一些方法进行解决。 解法一:更新或更改版本号 在Maven项目中,依赖项的版本是至关重要的。在遇到标记为红色的依赖项时,我们可以尝试通过更改或更新依赖…

    Java 2023年5月19日
    00
  • 一个通用的jsp分页PageBean

    下面我将为您详细讲解一个通用的JSP分页PageBean的完整攻略。 一、什么是PageBean? PageBean可以说是我们在Web开发中经常使用的一种数据封装类,在实现数据分页时,我们可以将分页相关的一些参数和数据封装到PageBean中。这样做的好处是,我们可以很方便的对分页进行控制。 二、如何实现一个通用的PageBean? 1. 编写PageBe…

    Java 2023年6月15日
    00
  • android 网络编程之网络通信几种方式实例分享

    Android 网络编程之网络通信几种方式实例分享 在Android应用的开发中,经常需要与远程服务器进行网络通信来获取数据,这就需要使用Android网络编程来实现。本文将介绍Android网络编程中几种常见的网络通信方式,并通过示例来说明。 1. HttpURLConnection HttpURLConnection 是一个用于发送HTTP/HTTPS请…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部