java使用jar包生成二维码的示例代码

下面是Java使用jar包生成二维码的完整攻略:

1. 引入Jar包

在Java中使用二维码需要引入第三方Jar包,可以使用Zxing或者QrCode这两个常用的Jar包。这里以Zxing为例,可以从官网或者Maven库中下载获取。

2. 生成二维码

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.net.URL;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.qrcode.QRCodeWriter;

public class QRCodeGenerator {

    public static void main(String[] args) throws Exception {

        String url = "https://www.baidu.com";
        int size = 250;
        String fileType = "png";
        File qrFile = new File("E:/qrcode.png");

        QRCodeWriter qrCodeWriter = new QRCodeWriter();
        BitMatrix bitMatrix = qrCodeWriter.encode(url, BarcodeFormat.QR_CODE, size, size);

        BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix, getMatrixConfig());

        //添加Logo
        URL logoUrl = new URL("https://ss0.bdstatic.com/6Ox1bjeh1BF3odCf/it/u=305420187,2505743536&fm=26&gp=0.jpg");
        BufferedImage logoImage = ImageIO.read(logoUrl);
        int logoWidth = bufferedImage.getWidth()/5;
        int logoHeight = bufferedImage.getHeight()/5;
        int logoX = (bufferedImage.getWidth()-logoWidth)/2;
        int logoY = (bufferedImage.getHeight()-logoHeight)/2;

        Graphics2D graphics = bufferedImage.createGraphics();
        graphics.drawImage(logoImage, logoX, logoY, logoWidth, logoHeight, null);
        graphics.setColor(Color.BLACK);
        graphics.drawRect(logoX, logoY, logoWidth, logoHeight);
        graphics.dispose();

        ImageIO.write(bufferedImage, fileType, qrFile);
    }

    private static int BLACK = 0xFF000000;
    private static int WHITE = 0xFFFFFFFF;

    private static BufferedImageOp getMatrixConfig() {
        return new BufferedImageOp() {
            @Override
            public BufferedImage filter(BufferedImage src, BufferedImage dest) {
                int qrWidth = src.getWidth();
                int qrHeight = src.getHeight();
                BufferedImage image = new BufferedImage(qrWidth, qrHeight, BufferedImage.TYPE_INT_RGB);
                for (int y = 0; y < qrHeight; y++) {
                    for (int x = 0; x < qrWidth; x++) {
                        image.setRGB(x, y, src.get(x, y) == true ? BLACK : WHITE);
                    }
                }
                return image;
            }
        };
    }
}

以上代码演示了如何使用Zxing生成一个含有Logo的二维码,具体实现步骤如下:

  1. 定义二维码链接地址和大小;
  2. 使用QRCodeWriter.encode方法生成二维码;
  3. 利用MatrixToImageWriter.toBufferedImage将二维码转换为BufferedImage;
  4. 添加Logo图片;
  5. 将BufferedImage输出为图片。

3. 读取二维码

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;
import java.util.Map;

import javax.imageio.ImageIO;

import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;

public class QRCodeReader {

    public static void main(String[] args) {

        String filePath = "E:/qrcode.png";
        File qrFile = new File(filePath);

        try {
            BufferedImage bufferedImage = ImageIO.read(qrFile);
            BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(bufferedImage)));
            Map<DecodeHintType, Object> hints = new HashMap<>();
            hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
            Result result = new MultiFormatReader().decode(binaryBitmap, hints);
            System.out.println("二维码内容:" + result.getText());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上代码演示了如何使用Zxing读取一个二维码,具体实现步骤如下:

  1. 读取二维码图片;
  2. 转成BufferedImage类型;
  3. 将BufferedImage转换为BinaryBitmap;
  4. 使用MultiFormatReader.decode方法解码二维码,并返回Result对象;
  5. 从Result对象中获取二维码内容。

以上就是Java使用Jar包生成二维码的完整攻略,希望能帮到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java使用jar包生成二维码的示例代码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java Property类使用详解

    Java Property类使用详解 在Java中,经常需要进行属性配置操作,而Java的Property类正是用来读写属性文件的。本文将详细讲解Java Property类的使用。 创建属性文件 属性文件通常以”.properties”为后缀,用于存储键值对的配置信息。我们可以用文本编辑器手动创建属性文件,格式如下: # This is a comment…

    Java 2023年6月15日
    00
  • 解析Java格式字符串的使用

    解析Java格式字符串的使用攻略 Java格式字符串是一种用来模板化字符串的特殊格式。Java提供了许多方法来解析和格式化Java格式字符串。本文将介绍如何使用Java中的格式化方法来解析Java格式字符串。 格式化方法 Java中的格式化方法有两种:字符串格式化方法和print格式化方法。 字符串格式化方法 字符串格式化方法是通过字符串中的格式占位符来实现…

    Java 2023年5月26日
    00
  • 前端开发和后端开发,哪个薪酬更高?

    前端开发和后端开发在薪酬方面没有一个绝对的胜负之分。具体来说,薪酬高低受到很多因素的影响,比如地域、公司规模、个人技能等等,下面我们逐个解析。 地域因素 不同地区的薪酬水平有很大的差异。一般来说,一线城市的薪酬水平高于二三线城市,同时还会因为当地的经济发展水平和就业竞争而有所不同。 以前端开发为例,2021年拉钩网前端开发职位的薪资报告显示,在一线城市(北京…

    Java 2023年5月23日
    00
  • 深度分析java dump文件

    以下是“深度分析java dump文件”的完整攻略: 什么是Java Dump文件 Java Dump文件是在Java应用程序运行时出现异常或死锁等问题时自动或手动导出的一种快照文件。它记录了Java虚拟机(JVM)在某个时间点上的内存状态,可以用于问题排查和调试。 如何生成Java Dump文件 可以通过以下两种方式生成Java Dump文件: JCons…

    Java 2023年5月20日
    00
  • java中你的项目应该如何正确分层

    在Java中,一个良好的项目设计需要正确的分层,这对于项目的稳定性,可扩展性以及可维护性都至关重要。下面将介绍几个分层和组织代码的最佳实践: 1. 分层架构 通常情况下,我们建议使用分层架构将应用程序划分为几个不同的部分,每个部分都有其独特的功能。这些层有不同的职责,且耦合度要尽量低。 分层结构通常包括以下几个部分: 表示层 (Presentation La…

    Java 2023年5月26日
    00
  • 美团面经总结(2023最新)

    分享一份读者面试美团的面经,比较有参考性,感兴趣的可以看看~ 一面 消息队列如何保证可靠性 消息队列如何保证消息幂等性 消息队列的优缺点 为什么用b+树 聚集索引和主键区别,其他引擎怎么做的 平时数据库编码 explain参数 http报文参数有哪些吗? 做题,链表奇偶有序输出 二面 自我介绍 有哪些排序算法? 介绍下快排/堆排/归并排序。 数据库中的索引应…

    Java 2023年5月7日
    00
  • MyBatis获取参数值的两种方式详解

    MyBatis获取参数值的两种方式详解 在 MyBatis 中,获取参数值是非常常见的操作。在 SQL 语句中,通常需要传入参数来完成查询、更新等操作。那么,在 MyBatis 中,我们如何获取这些参数值呢?本文将从两个方面,详细讲解 MyBatis 获取参数值的两种方式。 使用 #{} 获取参数值 在 MyBatis 中,使用 #{} 的方式,可以方便地获…

    Java 2023年6月1日
    00
  • 简单了解Spring中常用工具类

    下面我就来详细讲解下“简单了解Spring中常用工具类”的攻略,包括什么是Spring工具类,Spring常用工具类有哪些,以及如何使用这些工具类。 什么是Spring工具类 Spring工具类是指在Spring框架中提供的一些常用的工具类,用于完成一些常见的任务。这些工具类都封装了一些复杂的逻辑,方便我们在开发中直接调用。 Spring常用工具类 以下是S…

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