快速使用Java生成以及解析二维码

步骤 1 : 下载第三方jar包

生成和解析二维码需要用到第三方的包: QRCODE.jar。 在下载区(点击进入)可以下载

步骤 2 : 代码

二维码如何实现不用关心,只用关心两个方法:
把字符串写进二维码,并且生成图片到destFile


public static void qrCodeEncode(String encodeddata, File destFile)


把二维码信息从imageFile中读取出来


public static String qrCodeDecode(File imageFile)


主方法里就是实例,把字符串写进了qrcode.png,同时从qrcode.png里解析出字符串来

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.io.UnsupportedEncodingException;



import javax.imageio.ImageIO;



import com.swetake.util.Qrcode;



import jp.sourceforge.qrcode.QRCodeDecoder;

import jp.sourceforge.qrcode.data.QRCodeImage;

import jp.sourceforge.qrcode.exception.DecodingFailedException;



public class QRCodeUtil {



     public static void qrCodeEncode(String encodeddata, File destFile) throws IOException { 

            Qrcode qrcode = new Qrcode(); 

            qrcode.setQrcodeErrorCorrect('M');  // 纠错级别(L 7%、M 15%、Q 25%、H 30%)和版本有关 

            qrcode.setQrcodeEncodeMode('B');     

            qrcode.setQrcodeVersion(7);     // 设置Qrcode包的版本 

               

            byte[] d = encodeddata.getBytes("GBK"); // 字符集 

            BufferedImage bi = new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB); 

            // createGraphics   // 创建图层 

            Graphics2D g = bi.createGraphics(); 

               

            g.setBackground(Color.WHITE);   // 设置背景颜色(白色) 

            g.clearRect(0, 0, 139, 139);    // 矩形 X、Y、width、height 

            g.setColor(Color.BLACK);    // 设置图像颜色(黑色) 

       

            if (d.length > 0 && d.length < 123) { 

                boolean[][] b = qrcode.calQrcode(d); 

                for (int i = 0; i < b.length; i++) { 

                    for (int j = 0; j < b.length; j++) { 

                        if (b[j][i]) { 

                            g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3); 

                        } 

                    } 

                } 

            } 

               

//        Image img = ImageIO.read(new File("D:/tt.png"));  logo 

//        g.drawImage(img, 25, 55,60,50, null); 

                       

            g.dispose(); // 释放此图形的上下文以及它使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics 对象 

            bi.flush(); // 刷新此 Image 对象正在使用的所有可重构的资源 

       

            ImageIO.write(bi, "png", destFile); 

//          System.out.println("Input Encoded data is:" + encodeddata); 

        } 

       

        /**

         * 解析二维码,返回解析内容

         * 

         * @param imageFile

         * @return

         */ 

        public static String qrCodeDecode(File imageFile) { 

            String decodedData = null; 

            QRCodeDecoder decoder = new QRCodeDecoder(); 

            BufferedImage image = null; 

            try { 

                image = ImageIO.read(imageFile); 

            } catch (IOException e) { 

                System.out.println("Error: " + e.getMessage()); 

            } 

       

            try { 

                decodedData = new String(decoder.decode(new J2SEImage(image)), "GBK"); 

//              System.out.println("Output Decoded Data is:" + decodedData); 

            } catch (DecodingFailedException dfe) { 

                System.out.println("Error: " + dfe.getMessage()); 

            } catch (UnsupportedEncodingException e) { 

                e.printStackTrace(); 

            } 

            return decodedData; 

        } 

       

        static class J2SEImage implements QRCodeImage { 

            BufferedImage image; 

           

            public J2SEImage(BufferedImage image) { 

                this.image = image; 

            } 

           

            public int getWidth() { 

                return image.getWidth(); 

            } 

           

            public int getHeight() { 

                return image.getHeight(); 

            } 

           

            public int getPixel(int x, int y) { 

                return image.getRGB(x, y); 

            } 

        } 

         

        public static void main(String[] args) { 

            String filePath = "d:/qrcode.png"; 

            File qrFile = new File(filePath); 

       

            // 二维码内容 

            String encodeddata = "http://how2j.cn"; 

            try { 

                QRCodeUtil.qrCodeEncode(encodeddata, qrFile); 

            } catch (IOException e) { 

                e.printStackTrace(); 

            } 

       

            // 解码 

            String reText = QRCodeUtil.qrCodeDecode(qrFile); 

            System.out.println(reText); 

        } 

}

步骤 3 : 可运行项目

下载区(点击进入)有本知识点对应的可运行项目下载 ,实在自己搞不出来,就下载解压出来比较一下。


更多内容,点击了解: http://how2j.cn/k/qrcode/qrcode-java-qrcode/1635.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中结合jQuery生成二维码,通常涉及到两个部分:首先使用Java生成二维码数据,然后使用前端库如jQuery配合一个JavaScript QR码生成库(如qrcode.js)来显示二维码。以下是一个简单的步骤概述: 1. Java生成二维码:你可以使用第三方库如`javase QRCode Library`或`zxing`等,它们提供了生成二维码的API。例如,`zxing`库可以通过Java生成二维码图片的二进制流。 ```java import com.google.zxing.qrcode.QRCodeWriter; import com.google.zxing.common.BitMatrix; // 创建二维码内容 String content = "Your QR code data"; // 创建二维码生成器 QRCodeWriter writer = new QRCodeWriter(); // 生成二维码 BitMatrix matrix = writer.encode(content, BarcodeFormat.QR_CODE, // QR Code格式 200, // 图像宽度 200); // 图像高度 // 将矩阵转换为字节数组 byte[] imageBytes = new byte[matrix.getWidth() * matrix.getHeight()]; for (int y = 0; y < matrix.getHeight(); y++) { for (int x = 0; x < matrix.getWidth(); x++) { imageBytes[y * matrix.getWidth() + x] = matrix.get(x, y) ? (byte) 0xFF : (byte) 0x00; } } ``` 2. 前端展示二维码:将生成的字节数组发送到前端,通常是通过HTTP响应或者JSON。在jQuery中,你可以使用`$.getScript`或`$.ajax`获取这个字节数组,然后用`qrcode.js`库解析并显示。 ```javascript // 假设你已经将二维码数据作为`dataUrl`发送到前端 $.getScript('path/to/qrcode.min.js', function() { var qrElement = $('#qr-code'); // 你的HTML元素ID qrcode(qrElement, dataUrl); }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值