欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

用Java生成二维码代码分享

程序员文章站 2022-04-13 12:46:17
...
二维码的特点:

1. 高密度编码,信息容量大

可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。

2. 编码范围广

该条码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;可以表示多种语言文字;可表示图像数据。

3. 容错能力强,具有纠错功能

这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达50%仍可恢复信息。

4. 译码可靠性高

它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一。

5. 可引入加密措施

保密性、防伪性好。

6. 成本低,易制作,持久耐用

正因为以上这些特点,二维码现在越来越流行,应用也是越来越广(详细了解请见百度百科,介绍不是本篇重点),所以掌握如何开发二维码是非常不错的知识储备,因此本篇文章将为大家讲解如何生成、解析二维码。

本文说的是通过zxing实现二维码的生成与解析,看着很简单,直接上代码

import java.io.File;import java.io.IOException;import java.nio.file.Path;import java.util.HashMap;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;public class TestZXing {public static void main(String[] args) {int width=300;int height=300;
        String format="png";
        String contents="www.baidu.com";
        HashMap map=new HashMap();
        map.put(EncodeHintType.CHARACTER_SET, "utf-8");
        map.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.M);
        map.put(EncodeHintType.MARGIN, 0);try {
            BitMatrix bm = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height);
            Path file=new File("D:/img.png").toPath();
            MatrixToImageWriter.writeToPath(bm, format, file);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {            e.printStackTrace();
        }
    }
}

通过上面的代码则会生成一个内容链接为www.baidu.com的二维码

用Java生成二维码代码分享

对这个二维码的解析的代码如下

import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.HashMap;import javax.imageio.ImageIO;import com.google.zxing.BinaryBitmap;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatReader;import com.google.zxing.NotFoundException;import com.google.zxing.Result;import com.google.zxing.client.j2se.BufferedImageLuminanceSource;import com.google.zxing.common.HybridBinarizer;public class TestRead {public static void main(String[] args) {try {
            MultiFormatReader reader=new MultiFormatReader();//需要详细了解MultiFormatReader的小伙伴可以点我一下官方去看文档File f=new File("D:/img.png");
            BufferedImage image=ImageIO.read(f);
            BinaryBitmap bb=new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
            HashMap map =new HashMap();
            map.put(EncodeHintType.CHARACTER_SET, "utf-8");
            Result result = reader.decode(bb,map);
            System.out.println("解析结果:"+result.toString());
            System.out.println("二维码格式类型:"+result.getBarcodeFormat());
            System.out.println("二维码文本内容:"+result.getText());
        } catch (NotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

执行的结果如下

解析结果:www.baidu.com
二维码格式类型:QR_CODE
二维码文本内容:www.baidu.com

具体的jar包小伙伴可以自行下载

链接: 密码:kcjx

以上就是用Java生成二维码代码分享的详细内容,更多请关注其它相关文章!