iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java使用Zxing二维码生成的简单示例
  • 505
分享到

Java使用Zxing二维码生成的简单示例

Java二维码生成java代码生成二维码java zxing二维码生成 2023-01-17 18:01:35 505人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1、二维码简介2、ZXing简介3、示例3.1 搭建一个Maven项目,引入Zxing依赖包3.2 创建QrCodeUtil.java 类总结1、二维码简介 二维条形码是用某种特

1、二维码简介

二维条形码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值内容信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。二维码具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点。

二维码纠错级别

二维码纠错级别指的是在识别二维码时,对于损坏或模糊的二维码的容错能力。

一般来说,二维码有四个纠错级别:

  • L (低):可以纠正7%左右的错误。
  • M (中):可以纠正15%左右的错误。
  • Q (高):可以纠正25%左右的错误。
  • H (高):可以纠正30%左右的错误。

总结:一般来说,使用较高的纠错级别会导致生成的二维码更大,但是它的容错能力也会更强。

2、ZXing简介

ZXing(Zebra Crossing)是Google开发的一个二维码解析和生成的开源库。

官网地址:Http://code.google.com/p/zxing/

3、示例

通过Java调用Zxing实现二维码的生成

3.1 搭建一个maven项目,引入Zxing依赖包

 <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.0</version>
        </dependency>

3.2 创建QrCodeUtil.java 类

具体实现代码如下:

package  QrCodeUtil;
 
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.Hashtable;
 
import javax.imageio.ImageIO;
 
 
import com.alibaba.druid.util.StringUtils;
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;
 

public class QrCodeUtil {
 
    private static final int BLACK = 0xFF000000;
    private static final int WHITE = 0xFFFFFFFF;
    private static final int margin = 0;
    private static final int LogoPart = 4;
 
    public static void main(String[] args) throws WriterException {
        //二维码内容
        String content = "IT技术分享社区,一个有态度的互联网社区交流平台";
        String logoPath = "D:\\logo.png"; // 二维码中间的logo信息 非必须
        String format = "jpg";
        int width = 120; // 二维码宽度
        int height = 120;// 二维码高度
        // 设置二维码矩阵的信息
        BitMatrix bitMatrix = setBitMatrix(content, width, height);
        // 设置输出流
        OutputStream outStream = null;
        String path = "d:/Code" + new Date().getTime() + ".png";//设置二维码的文件名
        try {
            outStream = new FileOutputStream(new File(path));
            // 目前 针对容错等级为H reduceWhiteArea  二维码空白区域的大小 根据实际情况设置,如果二维码内容长度不固定的话 需要自己根据实际情况计算reduceWhiteArea的大小
            writeToFile(bitMatrix, format, outStream, logoPath, 5);
            outStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    
    private static BitMatrix setBitMatrix(String content, int width, int height) throws WriterException {
        BitMatrix bitMatrix = null;
        Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 指定编码方式,避免中文乱码
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 指定纠错等级 如果二维码里面的内容比较多的话推荐使用H 容错率30%, 这样可以避免一些扫描不出来的问题
        hints.put(EncodeHintType.MARGIN, margin); // 指定二维码四周白色区域大小 官方的这个方法目前没有没有作用默认设置为0
        bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
        return bitMatrix;
    }
    
    private static void writeToFile(BitMatrix matrix, String format, OutputStream outStream, String logoPath, int reduceWhiteArea) throws IOException {
        BufferedImage image = toBufferedImage(matrix, reduceWhiteArea);
        // 如果设置了二维码里面的logo 加入LOGO水印
        if (!StringUtils.isEmpty(logoPath)) {
            image = addLogo(image, logoPath);
        }
        ImageIO.write(image, format, outStream);
    }
 
    
    private static BufferedImage toBufferedImage(BitMatrix matrix, int reduceWhiteArea) {
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        BufferedImage image = new BufferedImage(width - 2 * reduceWhiteArea, height - 2 * reduceWhiteArea, BufferedImage.TYPE_3BYTE_BGR);
        for (int x = reduceWhiteArea; x < width - reduceWhiteArea; x++) {
            for (int y = reduceWhiteArea; y < height - reduceWhiteArea; y++) {
                image.setRGB(x - reduceWhiteArea, y - reduceWhiteArea, matrix.get(x, y) ? BLACK : WHITE);
            }
        }
        return image;
    }
 
    
    private static BufferedImage addLogo(BufferedImage image, String logoPath) throws IOException {
        Graphics2D g = image.createGraphics();
        BufferedImage logoImage = ImageIO.read(new File(logoPath));
        // 计算logo图片大小,可适应长方形图片,根据较短边生成正方形
        int width = image.getWidth() < image.getHeight() ? image.getWidth() / LogoPart : image.getHeight() / LogoPart;
        int height = width;
        // 计算logo图片放置位置
        int x = (image.getWidth() - width) / 2;
        int y = (image.getHeight() - height) / 2;
        // 在二维码图片上绘制中间的logo
        g.drawImage(logoImage, x, y, width, height, null);
        // 绘制logo边框,可选
        g.setStroke(new BasicStroke(2)); // 画笔粗细
        g.setColor(Color.WHITE); // 边框颜色
        g.drawRect(x, y, width, height); // 矩形边框
        logoImage.flush();
        g.dispose();
        return image;
    }
 
}

总结

到此这篇关于Java使用Zxing二维码生成的文章就介绍到这了,更多相关Java用Zxing二维码生成内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java使用Zxing二维码生成的简单示例

本文链接: https://www.lsjlt.com/news/178026.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java使用Zxing二维码生成的简单示例
    目录1、二维码简介2、ZXing简介3、示例3.1 搭建一个maven项目,引入Zxing依赖包3.2 创建QrCodeUtil.java 类总结1、二维码简介 二维条形码是用某种特...
    99+
    2023-01-17
    Java二维码生成 java代码生成二维码 java zxing二维码生成
  • Java生成读取条形码和二维码的简单示例
    条形码 将宽度不等的多个黑条和白条,按照一定的编码规则排序,用以表达一组信息的图像标识符 通常代表一串数字 / 字母,每一位有特殊含义 一般数据容量30个数字 / 字母 二维码 ...
    99+
    2024-04-02
  • java zxing合成复杂二维码图片示例详解
    目录说明:整体思路:图片合成四部曲踩过的坑说明: 最近接到需要将二维码合成复杂图片的需求,要求给二维码上下或者左侧添加相关文字描述,技术没有难点,整理本文主要记录思路和踩过的坑。 整...
    99+
    2024-04-02
  • 基于google zxing的Java二维码生成与解码
     本文实例为大家分享了Java二维码生成与解码的具体代码,供大家参考,具体内容如下一、添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包)<!-- google二维码工具 --><depende...
    99+
    2023-05-31
    google zxing java
  • vue中生成条形码(jsbarcode)和二维码(qrcodejs2)的简单示例
    目录1.条形码插件jsbarcode2.二维码插件总结1.条形码插件jsbarcode 安装:npm install jsbarcode --save 引入:在需要生成条形码的页面引...
    99+
    2022-12-27
    Vue生成二维码 vue 生成条形码 vue qrcode生成二维码
  • Android中二维码的扫描和生成(使用zxing库)
    目录一.zxing是什么?二.集成zxing框架三.界面设计四.二维码生成五.二维码扫描附:Android使用Zxing识别图片多个二维码总结一.zxing是什么? zxing是go...
    99+
    2024-04-02
  • vue生成二维码QR Code的简单实现方法示例
    目录qrcodejs2vue-qrqrcodejs2 下载qrcodejs2 cnpm i -S qrcodejs2 使用 <template> <span...
    99+
    2024-04-02
  • Android利用zxing生成二维码的详细过程
    本篇内容介绍了“Android利用zxing生成二维码的详细过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录二维码生成原理(即工作原理...
    99+
    2023-06-20
  • Android利用zxing生成二维码的过程记录
    目录二维码生成原理(即工作原理)效果图如下:前提:源码如下:总结二维码生成原理(即工作原理) 二维码官方叫版本Version。Version 1是21 x 21的矩阵,Versio...
    99+
    2024-04-02
  • js生成二维码的示例代码
    前段时间项目中需要开发扫描二维码查看信息的功能,在网上查了一些资料,把用过的方法进行总结需要导入一个qrcode的js 插件。 插件链接: qrcode.js下载地址,点击即可下载 ...
    99+
    2024-04-02
  • QR-Code二维码如何利用zxing库实现生成
    QR-Code二维码如何利用zxing库实现生成?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。详解使用zxing库生成QR-Code二维码首先是引入zxing库,我是使用mav...
    99+
    2023-05-31
    zxing库 qr-code 二维码
  • 利用java生成二维码工具类示例代码
    二维码介绍二维条形码最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来...
    99+
    2023-05-31
    java 生成二维码 工具类
  • Vue实现生成二维码的简单方式
    目录前言①首先创建一个vue项目②引入qrcodejs2③封装组件1. 创建Vue文件2. 定义template模板3. 引入QRCode包4. 进行封装5. less控制样式④启动...
    99+
    2023-01-05
    前端vue生成二维码 vue生成二维码样式 vue生成二维码样式
  • 如何使用Java生成二维码
    如何使用Java生成二维码?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理...
    99+
    2023-06-14
  • python应用之qrcode生成二维码的示例
    本文将为大家详细介绍“python应用之qrcode生成二维码的示例”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“python应用之qrcode生成二维码的示例”能够给你意想不到的收获,请大家跟着小编的思路慢...
    99+
    2023-06-06
  • PHP实现生成二维码的示例代码
    目录前言1、目前有2种类型的二维码2、用户扫描带场景值二维码时,可能推送以下两种事件3、创建二维码ticket4、临时二维码请求说明5、永久二维码请求说明6、临时二维码和永久二维码生...
    99+
    2024-04-02
  • PHP使用QR Code生成二维码实例
    使用PHP QR Code生成二维码 HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址: http://phpq...
    99+
    2024-04-02
  • Java二维数组简单定义与使用方法示例
    本文实例讲述了Java二维数组简单定义与使用方法。分享给大家供大家参考,具体如下:Java的二维数组是先创建一个一维数组,然后该数组的元素再引用另外一个一维数组。在使用二维数组的时候,通过两个中括号[]来访问每一层维度的引用,直到访问到最终...
    99+
    2023-05-31
    java 二维数组 ava
  • java二维码生成的方法
    本文实例为大家分享了java二维码的实现代码,供大家参考,具体内容如下这次用到的jar包是zxing,没有用到core的jar包先导入zxing.jar包生成二维码package cn.huse.erweima;import java.io...
    99+
    2023-05-31
    java 二维码 ava
  • Java IDE中的二维码生成器:一键生成自定义二维码
    Java IDE中的二维码生成器:一键生成自定义二维码 随着二维码在各个领域的广泛应用,越来越多的开发者需要在自己的应用程序中集成二维码生成功能。而Java作为一种广泛应用于企业级应用开发的编程语言,其IDE中的二维码生成器也越来越受到开发...
    99+
    2023-11-01
    ide 二维码 关键字
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作