zxing 生成二维码

一、zxing介绍

  zxing是google提供生成、解析一维码、二维码的开源库。

二、使用

2.1 maven pom 配置

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

2.2 二维码生成

      /**
     * 编码
     * 
     * @param contents
     * @param width
     * @param height
     * @param imgPath
     */
    public static void encode(String contents, int width, int height, String imgPath) {
        try {
            BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height);

            MatrixToImageWriter.writeToFile(bitMatrix, "png", new File(imgPath));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }        

 

    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        String imgPath = "/Users/xupengwei/tool/yuanmeng/zxing.png";  
        String contents = "http://taobao.com";  
        int width = 300, height = 300;  
        QrCode.encode(contents, width, height, imgPath);  
    } 

结果 

 

2.3 二维码解码

    /**
     * @param imgPath
     * @return String
     */
    public static String decode(String imgPath) {
        BufferedImage image = null;
        Result result = null;
        try {
            image = ImageIO.read(new File(imgPath));
            LuminanceSource source = new BufferedImageLuminanceSource(image);
            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

            result = new MultiFormatReader().decode(bitmap);
            return result.getText();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

 

 

    public static void main(String[] args) {
        
        String imgPath = "/Users/xupengwei/tool/yuanmeng/zxing.png";  
        String decodeContent = QrCode.decode(imgPath);  
        System.out.println(decodeContent);  
    }

 

结果:

http://taobao.com

 

 

三、参考文献

1、https://github.com/zxing/zxing

2、API 文档 : https://zxing.github.io/zxing/apidocs/ 

### 如何使用 ZXing 生成二维码 #### 使用 Java 和 ZXing生成二维码 为了在项目中集成 ZXing生成二维码,首先需要引入 ZXing 的依赖项。对于 Maven 用户,在 `pom.xml` 文件中添加如下依赖: ```xml <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.4.1</version> </dependency> ``` 接着定义一个名为 `generateQRCodeImage` 的方法来创建二维码图像。此函数接收四个参数:要编码的文字内容 (`text`)、期望的宽度 (`width`)、高度 (`height`) 及保存位置 (`filePath`)。 ```java import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import java.io.IOException; import java.nio.file.FileSystems; import java.util.HashMap; import java.util.Map; public class QRCodeGenerator { private static final String QR_CODE_IMAGE_PATH = "./MyQRCode.png"; public static void main(String[] args) { String data = "https://www.example.com"; int width = 300; int height = 300; try { generateQRCodeImage(data, width, height); System.out.println("QR Code has been generated successfully."); } catch (WriterException | IOException e) { System.err.println(e.getMessage()); } } private static void generateQRCodeImage(String text, int width, int height) throws WriterException, IOException { Map<EncodeHintType, Integer> hints = new HashMap<>(); hints.put(EncodeHintType.MARGIN, 1); // 设置边距 QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints); Path path = FileSystems.getDefault().getPath(QR_CODE_IMAGE_PATH); MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); } } ``` 上述代码展示了如何利用 ZXing 库中的 `QRCodeWriter` 类构建位矩阵(`BitMatrix`) 并通过 `MatrixToImageWriter` 将其转换成 PNG 图像文件[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值