条码/二维码之开源利器ZXing图文介绍(转)
条形码/二维码之开源利器ZXing图文介绍(转)摘选:http://sjsky.iteye.com/blog/1142177?全文目录:基本介绍
条形码/二维码之开源利器ZXing图文介绍(转)
摘选:http://sjsky.iteye.com/blog/1142177
?
全文目录:
基本介绍二维码(比如:QRCode)的编码和解码演示条形码(比如:EAN-13)的编码和解码演示
【一】、基本介绍:
?1-1. ZXing是一个开源Java类库用于解析多种格式的条形码和二维码.
官网:http://code.google.com/p/zxing/
截止目前为止最新版本为1.7,提供以下编码格式的支持:
UPC-A and UPC-E EAN-8 and EAN-13 Code 39 Code 93 Code 128 QR Code ITF Codabar RSS-14 (all variants) Data Matrix PDF 417 ('alpha' quality) Aztec ('alpha' quality)
同时官网提供了 Android、cpp、C#、iPhone、j2me、j2se、jruby、objc、rim、symbian等多种应用的类库,具体详情可以参考下载的源码包中。
?
1-2. 本文和之前的那篇文章一样,主要是在PC上实现条形码(EAN-13)和二维码(QRCode)的编码和解码的示例,以供大家参考,用到了源码中core和javase下面的相关源代码,附件提供自己编译之后的lib包:
zxing.jarzxing-j2se.jar
有关各种手机系统的应用,有兴趣的朋友可以下载官方源码包,包下有具体详细的应用介绍。
【二】、二维码(QRCode)的编码和解码演示:
?
?2-1. 编码示例:
?和前篇介绍一样,用手机的二维码扫描软件(本人用的:android 快拍二维码)来测试下,识别成功的截图如下:
?
2-2. 解码示例:
?
运行后生成的条形码图片如下:
??????????????????????????????????????????
用手机的扫描软件,识别成功的截图如下:
3-2. 解码示例:
package?michael.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://sjsky.iteye.com??*?@author?Michael??*/??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?=?"d:/test/twocode/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.");????????}??}??
?运行结果如下:
写道解码内容如下:
6923450657713
Michael ,you have finished zxing decode.
?
从测试结果可见:解码出的内容和之前编码的内容是一致。