JAVA生成二维码(二)深度处理

本文旨在解决Java生成二维码时遇到的问题,包括排错率的原理与选择、编码模式的解析及版本问题的探讨。通过实例分析了排错率过高导致的内容过长、版本过大引起的二维码不完整以及编码模式错误造成扫描无结果等常见问题,并给出了相应的解决方案。
摘要由CSDN通过智能技术生成

1.写这个博客的目的

解决JAVA生成二维码(一)中的一些问题。

2.解读排错率,编码模式,版本问题.以下都是自己测试中存在的问题

1.排错率
排错的原理是二维码在编码过程中进行了冗余,就像是123被编码成123123,这样只要扫描到一部分二维码图片,二维码内容还是可以被全部读到。
设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小,即是指二维码图标被遮挡多少后,仍可以被扫描出来的能力。排错率越高,则二维码图片能被遮挡的部分越多。

2.编码模式
编码模式:Numeric(N-数字):Binary(B-二进制):Alphanumeric(A-英文字母)
不同的内容使用对应的编码格式

3.版本问题(1-40)
即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本每边增加4个模块。

问题一:排错率选太高导致内容过长,二维码生成失败
如运行如下代码:

package com.wangcong;
 
import com.swetake.util.Qrcode;
 
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
 
public class two {
    public static void main(String[] args) {
        String imgPath = "E:/code.png";         // 二维码保存路径
        // 跳转的内容,如果http://则当做文字处理
        String content = "好好学习,天天向上,努力敲代码学JAVA";
        
        // 创建封装类
        QrCodeAssis assis = new QrCodeAssis(imgPath, content);
        boolean result =  assis.createCode(480, 480);
        if (result) {
            System.out.println("二维码生成成功!");
        } else {
            System.out.println("二维码生成失败!");
        }
    }
}


/**
 * 使用QRCode生成二维码
 */
class QrCodeAssis{
    private String imgPath;         // 二维码保存路径
    private String content;         // 二维码内容
 
    /**
     * imgPath 二维码保存路径, content 二维码内容]
     */
    QrCodeAssis(String imgPath, String content) {
        this.imgPath = imgPath;
        this.content = content;
    }
    /**
     * boolean 二维码是否生成成功
     */
    boolean createCode(int width, int height) {
        boolean flag = true;
        try {
            Qrcode qrcode = new Qrcode();           // 创建Qrcode对象
            // 排错率可选(%)-L(7):M(15):Q(25):H(30)
            qrcode.setQrcodeErrorCorrect('Q');
            // 编码模式-Numeric(N-数字):Binary(B-二进制):Alphanumeric(A-英文字母)
            qrcode.setQrcodeEncodeMode('B');
            qrcode.setQrcodeVersion(3);             // 设置版本(可选)
 
            width = width >= 100 ? width : 100;     // 宽度至少100
            height = height >= 100 ? height: 100;   // 高度至少100
            // 创建画布和画图设备
            BufferedImage img &#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值