`
gaozzsoft
  • 浏览: 428880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

JAVA实现二维码、条形码生成与破译-开源Zxing使用研究

 
阅读更多

二维码编码代码实现类:

package zxing;


import java.io.File;     

import java.util.Hashtable;     

    

import com.google.zxing.BarcodeFormat;     

import com.google.zxing.EncodeHintType;     

import com.google.zxing.MultiFormatWriter;     

import com.google.zxing.client.j2se.MatrixToImageWriter;     

import com.google.zxing.common.BitMatrix;     

import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;     

    

/**   

 * @blog http://gaozzsoft.iteye.com   

 * @author gaozzsoft   

 */    

public class ZxingEncoderHandler {     

    

    /**   

     * 编码   

     * @param contents   

     * @param width   

     * @param height   

     * @param imgPath   

     */    

    public void encode(String contents, int width, int height, String imgPath) {     

        Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();     

        // 指定纠错等级     

        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);     

        // 指定编码格式     

        hints.put(EncodeHintType.CHARACTER_SET, "GBK");     

        try {     

            BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,     

                    BarcodeFormat.QR_CODE, width, height, hints);     

    

            MatrixToImageWriter     

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

    

        } catch (Exception e) {     

            e.printStackTrace();     

        }     

    }     

    

    /**   

     * @param args   

     */    

    public static void main(String[] args) {     

        String imgPath = "e:/michael_zxing.png";     

        String contents = "Hello Michael(大大),welcome to Zxing!"    

                + "\nMichael’s blog [ http://sjsky.iteye.com ]"    

                + "\nEMail [ sjsky007@gmail.com ]" + "\nTwitter [ @suncto ]";     

        int width = 300, height = 300;     

        ZxingEncoderHandler handler = new ZxingEncoderHandler();     

        handler.encode(contents, width, height, imgPath);     

    

        System.out.println("Michael ,you have finished zxing encode.");     

    }     

}    


二维码解码代码实现类:

package zxing;


import java.awt.image.BufferedImage;     

import java.io.File;     

import java.util.Hashtable;     

    

import javax.imageio.ImageIO;     

    

import com.google.zxing.BinaryBitmap;     

import com.google.zxing.DecodeHintType;     

import com.google.zxing.LuminanceSource;     

import com.google.zxing.MultiFormatReader;     

import com.google.zxing.Result;     

import com.google.zxing.client.j2se.BufferedImageLuminanceSource;     

import com.google.zxing.common.HybridBinarizer;     

    

/**   

 * @blog http://gaozzsoft.iteye.com   

 * @author gaozzsoft   

 */    

public class ZxingDecoderHandler {     

    

    /**   

     * @param imgPath   

     * @return String   

     */    

    public String decode(String imgPath) {     

        BufferedImage image = null;     

        Result result = null;     

        try {     

            image = ImageIO.read(new File(imgPath));     

            if (image == null) {     

                System.out.println("the decode image may be not exit.");     

            }     

            LuminanceSource source = new BufferedImageLuminanceSource(image);     

            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));     

    

            Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();     

            hints.put(DecodeHintType.CHARACTER_SET, "GBK");     

            result = new MultiFormatReader().decode(bitmap, hints);

            

            return result.getText();     

        } catch (Exception e) {     

            e.printStackTrace();     

        }     

        return null;     

    }     

    

    /**   

     * @param args   

     */    

    public static void main(String[] args) {     

        String imgPath = "e:/michael_zxing.png";     

        ZxingDecoderHandler handler = new ZxingDecoderHandler();     

        String decodeContent = handler.decode(imgPath);     

        System.out.println("解码内容如下:");     

        System.out.println(decodeContent);     

        System.out.println("Michael ,you have finished zxing decode.");     

    

    }     

}    



条形码编码代码实现类:

package zxing;


import java.io.File;     


import com.google.zxing.BarcodeFormat;     

import com.google.zxing.MultiFormatWriter;     

import com.google.zxing.client.j2se.MatrixToImageWriter;     

import com.google.zxing.common.BitMatrix;     

    

/**   

 * @blog http://gaozzsoft.iteye.com   

 * @author gaozzsoft   

 */ 

public class ZxingEAN13EncoderHandler {     

    

    /**   

     * 编码   

     * @param contents   

     * @param width   

     * @param height   

     * @param imgPath   

     */    

    public void encode(String contents, int width, int height, String imgPath) {     

        int codeWidth = 3 + // start guard     

                (7 * 6) + // left bars     

                5 + // middle guard     

                (7 * 6) + // right bars     

                3; // end guard     

        codeWidth = Math.max(codeWidth, width);     

        try {     

            BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,     

                    BarcodeFormat.EAN_13, codeWidth, height, null);     

    

            MatrixToImageWriter     

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

    

        } catch (Exception e) {     

            e.printStackTrace();     

        }     

    }     

    

    /**   

     * @param args   

     */    

    public static void main(String[] args) {     

        String imgPath = "e:/zxing_EAN13.png";     

        // 益达无糖口香糖的条形码     

        String contents = "6923450657713";     

    

        int width = 105, height = 50;     

        ZxingEAN13EncoderHandler handler = new ZxingEAN13EncoderHandler();     

        handler.encode(contents, width, height, imgPath);     

    

        System.out.println("Michael ,you have finished zxing EAN13 encode.");     

    }     

}    



条形码解码代码实现类:

package zxing;


import java.awt.image.BufferedImage;     

import java.io.File;     

    

import javax.imageio.ImageIO;     

    

import com.google.zxing.BinaryBitmap;     

import com.google.zxing.LuminanceSource;     

import com.google.zxing.MultiFormatReader;     

import com.google.zxing.Result;     

import com.google.zxing.client.j2se.BufferedImageLuminanceSource;     

import com.google.zxing.common.HybridBinarizer;     

    

/**   

 * @blog http://gaozzsoft.iteye.com   

 * @author gaozzsoft   

 */     

public class ZxingEAN13DecoderHandler {     

    

    /**   

     * @param imgPath   

     * @return String   

     */    

    public String decode(String imgPath) {     

        BufferedImage image = null;     

        Result result = null;     

        try {     

            image = ImageIO.read(new File(imgPath));     

            if (image == null) {     

                System.out.println("the decode image may be not exit.");     

            }     

            LuminanceSource source = new BufferedImageLuminanceSource(image);     

            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));     

    

            result = new MultiFormatReader().decode(bitmap, null);     

            return result.getText();     

        } catch (Exception e) {     

            e.printStackTrace();     

        }     

        return null;     

    }     

    

    /**   

     * @param args   

     */    

    public static void main(String[] args) {     

        String imgPath = "e:/zxing_EAN13.png";     

        ZxingEAN13DecoderHandler handler = new ZxingEAN13DecoderHandler();     

        String decodeContent = handler.decode(imgPath);     

        System.out.println("解码内容如下:");     

        System.out.println(decodeContent);     

        System.out.println("Michael ,you have finished zxing EAN-13 decode.");     

    

    }     

}  

 

Import Jars:

core.jar、javase.jar(需要下载zxing利用里边的这两个JAR足够了)

分享到:
评论

相关推荐

    java实现条形码二维码生成含文字标签信息

    本篇将深入探讨如何使用Java结合ZXing库来生成包含文字标签信息的条形码和二维码。 ZXing,全称为“Zebra Crossing”,是一个开源的、跨平台的条码读取和生成项目。它支持多种条码格式,包括一维条形码(如EAN-13、...

    二维码生成与解析---三种二维码的生成方式,附带解析

    zxing是一个开源的二维码和条形码读取库,由Google开发。它支持多种编码格式,包括QR码、Data Matrix、UPC和EAN等。在Java环境下,你可以使用zxing的`com.google.zxing.client.j2se`模块来生成二维码。生成二维码的...

    安卓app开发项目-使用ZXing识别条码二维码(简单的实现)(源码).zip

    安卓app开发项目-使用ZXing识别条码二维码(简单的实现)(源码).zip安卓app开发项目-使用ZXing识别条码二维码(简单的实现)(源码).zip安卓app开发项目-使用ZXing识别条码二维码(简单的实现)(源码).zip安卓app开发...

    java实现二维码生成的几个方法

    ZXing,由Google开发,是一个开源的条码解码库,同时也支持二维码生成。ZXing提供了多种语言的API,包括Java。在Java代码示例中,我们可以看到如何使用ZXing的`MultiFormatWriter`和`QRCodeWriter`类来编码文本,...

    使用zxing开发的二维码/条形码/带logo彩色二维码例子

    Google开源的ZXing(Zebra Crossing)库为开发者提供了跨平台的二维码和条形码生成与解码能力。本项目以ZXing为基础,结合自定义功能,如生成带有Logo的彩色二维码,为开发人员提供了更丰富的应用场景。 ZXing(又...

    Java三种生成条形码的源码(barcode4j、jbarcode、google-zxing)

    以下是关于使用Java生成条形码的三个主要方法的详细解释:barcode4j、jbarcode和google-zxing。 1. **barcode4j**: Barcode4J是一个开源的Java库,基于Apache 2.0许可,专门用于生成各种类型的条形码。它使用XML...

    Google ZXing制作的条形码、二维码的生成、扫描Demo 源码.zip

    ZXing,全称为“Zebra Crossing”,是一款开源的、跨平台的条形码和二维码读取与生成库。Google ZXing项目始于2007年,旨在为多种平台提供便捷的条码处理能力,包括Java、Android、iOS、Web等。这个压缩包中的源码是...

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

    例如,它可以使用Java的`com.google.zxing`库,这是一个强大的开源项目,支持多种条码和二维码的生成与解码。在这个库中,开发者可以使用`BitMatrix`类来创建二进制矩阵,然后将其转换为图像,最终形成二维码。此外...

    zxing实现二维码扫描,条形码生成,二维码生成,条形码扫描等功能的Demo

    这个Demo展示了如何使用ZXing库在Android平台上实现二维码扫描、条形码生成、二维码生成以及条形码扫描等功能。以下是对这些功能的详细解释: 1. **二维码扫描**: - ZXing库提供了`BarcodeScanner`类,用于处理...

    java使用谷歌zxing实现二维码生成读取

    在Java中使用ZXing实现二维码的生成和读取,首先需要引入ZXing库,例如这里提供的`zxing-3.2.1.jar`文件,这是ZXing的最新版本,包含了所有必要的功能模块。 **一、ZXing的使用** 1. **添加依赖** 将`zxing-3.2.1...

    Android实现二维码扫描功能(四)-ZXing识别图片二维码,相册选图(新版)

    Android实现二维码扫描功能(四)-ZXing识别图片二维码,从相册中选择图片并识别图中二维码,详见:http://blog.csdn.net/ahuyangdong/article/details/77487650,持续更新的版本:...最新的lib版本:...

    二维码生成与读取程序--vs2010下c#

    ZXing.Net是一个跨平台的条形码和二维码读取与生成库,而QRCoder专注于二维码生成,轻量级且易于使用。在VS2010中,可以通过NuGet包管理器安装这些库。 1. **生成二维码**: - 首先,引入ZXing.Net或QRCoder库。...

    java zxing二维码、条形码生成与解码

    Java ZXing库,全称“Zebra Crossing”,是一款开源的二维码和条形码处理库,广泛应用于各种数据编码和解码场景。它提供了强大的功能,能够轻松地在Java应用程序中生成和读取二维码和条形码。下面我们将深入探讨如何...

    二维码的生成及解码-java-web

    ZXing是一个开源项目,提供了多种条形码和二维码的读取、生成功能。在这个项目中,可能已经使用了ZXing或者类似的库来创建二维码。 2. **数据编码**:首先,你需要将要编码的信息(如URL、文本、联系人信息等)转换...

    使用Java zxing开发的二维码 带logo彩色二维码

    本文将详细讲解如何使用Java与ZXing(Zebra Crossing)库来开发带logo的彩色二维码,以及涉及到的图片比例压缩技术。 **ZXing库介绍** ZXing(读作“zebra crossing”,斑马线)是一个开源的多格式一维和二维条码...

    自定义UI实现高仿微信扫一扫二维码条形码扫描,集成ZXing包实现项目需求功能

    总的来说,这个项目为开发者提供了一种实现自定义UI的二维码和条形码扫描功能的方法,利用了ZXing的强大解码能力,同时保持了与应用整体风格的一致性,对于需要类似功能的Android开发者来说具有很高的参考价值。...

    ireport生成一维码和google zxing二维码

    1. 安装必要的库:确保你的项目中包含了生成条形码所需的jar包,如jasperreports_extension.jar,它包含了各种条形码生成器的实现。 2. 添加条形码组件:在iReport的设计视图中,从工具栏选择“条形码”组件,将其...

    Java二维码添加中间logo,有Zxing与QRCode两种方式

    首先,Zxing是一个开源的二维码和条形码解码库,它提供了多种编码和解码功能。对于生成带有logo的二维码,我们需要自定义`MultiFormatWriter`和`BitMatrix`。以下是一个简单的步骤概述: 1. 使用`MultiFormatWriter...

    计算机毕业设计 - 使用ZXing识别条码二维码(简单的实现),保证可靠运行,毕业生可参考,免费资源下载!

    计算机毕业设计 - 使用ZXing识别条码二维码(简单的实现),保证可靠运行,毕业生可参考,免费资源下载! 计算机毕业设计 - 使用ZXing识别条码二维码(简单的实现),保证可靠运行,毕业生可参考,免费资源下载! ...

    Zxing生成二维码(解决中文乱码)

    这是Zxing的源码,没有打包成jar利于学习使用。...使用时注意path的默认地址,Main类中是生成二维码的代码,GetMain类中是读取二维码的代码。 eclipse中Ctrl+Shift+R快速查找类 希望对你有所帮助。

Global site tag (gtag.js) - Google Analytics