`

java二维码编码和解析

 
阅读更多
package com.banmacoffee.utils;
 
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 QRCodeUtils {
 
    /**
     * 编码字符串内容到目标File对象中
     * @param encodeddata
     * @param destFile
     * @throws IOException
     */
    public static void qrCodeEncode(String encodeddata,File destFile) throws IOException{
        Qrcode qrcode = new Qrcode();
        qrcode.setQrcodeErrorCorrect('M');
        qrcode.setQrcodeEncodeMode('B');
        qrcode.setQrcodeVersion(7);
        byte[] d = encodeddata.getBytes("GBK");
        BufferedImage bi = new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB);
        // createGraphics
        Graphics2D g = bi.createGraphics();
        // set background
        g.setBackground(Color.WHITE);
        g.clearRect(0, 0, 139, 139);
        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);
                    }
                }
            }
        }
 
        g.dispose();
        bi.flush();
 
        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;
    }
     
    public static void main(String[] args) {
        String FilePath = "C:\\Demo\\QRCode.png";
        File qrFile = new File(FilePath);
         
        //编码
        String encodeddata = "{id:10022,name:wandern}";
        try {
            QRCodeUtils.qrCodeEncode(encodeddata, qrFile);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        };
         
         
        //解码
        String reText = QRCodeUtils.qrCodeDecode(qrFile);
        System.out.println(reText);
    }
}
 
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);
    }
}
分享到:
评论

相关推荐

    Java 二维码生成、解析

    Java 二维码生成与解析是Java开发中常见的功能需求,尤其在移动互联网时代,二维码被广泛应用于数据交换、链接跳转、支付凭证等场景。本文将详细介绍如何使用Google的ZXing库来实现Java环境下的二维码生成与解析。 ...

    java二维码编码解码测试

    本项目名为“java二维码编码解码测试”,其核心是利用QRCoder这个Java库进行二维码的编码和解码操作。 QRCoder是一个简洁且易于使用的Java库,专门用于创建二维码。它允许开发者将各种类型的数据,如文本、URL、...

    java 二维码编码解码

    首先,我们需要了解二维码编码的过程。编码是将数据转化为二维码图形的过程。在Java中,我们可以使用开源库如`com.google.zxing`(ZXing,意为“Zebra Crossing”),这是一个多格式的开源条码/二维码读写库。要进行...

    java二维码生成与解析代码实现.docx

    以下是一些关于Java二维码生成与解析的关键知识点: 1. **依赖库**: - `QRCode.jar`:这是用于生成和解码二维码的库,它可能包含了`jp.sourceforge.qrcode`和`com.swetake.util.Qrcode`这两个包,这两个包提供了...

    java二维码生成与解析实例

    Java语言提供了多种库来支持二维码的生成与解析,其中Zxing(Zebra Crossing)是一个开源项目,专为多种一维条码和二维条码提供读取、生成功能。本文将深入探讨如何在Java中利用Zxing库进行二维码的生成与解析。 ...

    java二维码生成和解析源码

    Java二维码生成和解析是开发过程中常见的一项功能,它涉及到图像处理和编码解码技术。本文将深入探讨如何在Java环境中实现二维码的生成与解析,并基于提供的源码进行讲解。 首先,二维码(Quick Response Code)是...

    java写二维码和解析二维码要用的jar包

    在Java开发中,生成和解析二维码(QR Code)是一项常见的任务,这通常涉及到第三方库的使用。本主题中提到的"java写二维码和解析二维码要用的jar包"指的是使用ZXing(Zebra Crossing)库,这是一个开源的Java项目,...

    java二维码生成和添加中间图片

    Java二维码生成技术是一种在软件开发中常用的功能,它允许我们将数据编码成二维图像,以便于快速扫描和读取。Qrcode(二维码)是日本Denso Wave公司发明的一种矩阵式条形码,相比于传统的条形码,它能存储更多的数据...

    zxing.jar+二维码编码和解析实例

    二维码编码和解析是现代信息化应用中的重要组成部分,尤其是在移动设备上,二维码被广泛用于数据交换、网址跳转、名片分享等场景。ZXing(Zebra Crossing)是一个开源项目,提供了多种条码和二维码的编码与解码功能...

    二维码生成和解析

    二维码生成和解析是现代信息化技术中的重要组成部分,尤其在移动互联网和物联网领域中广泛应用。Java作为一门跨平台的编程语言,提供...在实际应用中,还需要考虑到错误校验、容错处理以及对不同二维码编码格式的支持。

    java二维码生成与解析

    Java二维码生成与解析是Java开发中的一个重要功能,它涉及到数据编码、图像处理和解码算法等多个技术领域。在这个话题中,我们将深入探讨如何在Java环境中创建和读取二维码(Quick Response Code),以及相关的编程...

    java web 二维码生成与解析实例

    总结来说,这个Java Web二维码生成与解析实例涵盖了Java编程、Web开发、二维码编码解码以及HTTP服务处理等多个技术领域。通过实践这个实例,开发者不仅可以掌握基础的二维码操作,还能深入理解Java Web应用的开发...

    Java二维码解析和生成库zxing

    Java二维码解析和生成库ZXing,全称"Zebra Crossing",是一款强大的开源项目,用于处理一维和二维条形码。ZXing提供了一系列API,让开发者能够方便地在Java应用中实现条形码的读取和生成。该库不仅支持常见的QR码,...

    java实现生成二维码和解析二维码

    总之,Java实现二维码生成和解析的关键在于选择合适的库(如ZXing),理解二维码编码规则,并利用提供的API进行编码和解码操作。实际应用中,还需要考虑性能优化、错误处理以及用户交互设计等方面,确保功能的稳定性...

    java 二维码生成及解析demo

    本教程将深入讲解如何使用Google的Zxing库在Java环境中生成和解析二维码。 首先,Zxing(读作“zebra crossing”)是一个开源的、多平台的条码解码库,支持多种条码格式,包括QR码。它提供了丰富的API供开发者使用...

    java二维码生成与解析代码实现代码

    Java二维码生成通常依赖于第三方库,如ZXing(Zebra Crossing)或Java QRCode Library。ZXing是一个开源项目,提供了多种条形码和二维码的读写能力。在Java中使用ZXing,我们需要添加对应的依赖,如果你使用的是...

    java qrcode产生二维码和解析二维码

    在Java编程环境中,生成和解析二维码(QR Code)是一项常见的任务,特别是在移动应用、网站链接分享、电子票务等领域有着广泛的应用。QR Code是一种二维条形码,可以存储大量信息,如文本、网址、联系人信息等。在这...

    生成、解析带logo的二维码(java)

    总结来说,生成和解析带logo的二维码在Java中可以通过ZXing库实现。这个过程涉及到数据编码、图像处理和解码等多个环节。开发者需要理解二维码的工作原理,熟练掌握ZXing库的使用,以及具备一定的图像处理知识,才能...

    Java QRCode二维码生成与识别 开源

    Java QRCode二维码生成与识别是Java编程领域中的一个重要技术,主要应用于数据编码和快速信息交换。QRCode(Quick Response Code)是一种二维条码,能够存储大量的文本信息,包括字母、数字、汉字等,并且可以被各种...

    java生成二维码和解析二维码所需jar包

    在Java开发中,生成二维码(QR Code)和解析二维码是常见的需求,特别是在移动应用、物联网设备通讯、数据分享等领域。为了实现这些功能,开发者通常需要引入特定的库或jar包。这里提到的"java生成二维码和解析...

Global site tag (gtag.js) - Google Analytics