歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

條形碼/二維碼之開源利器ZXing圖文介紹

繼前面介紹的一個日本開源軟件(該軟件只能實現QRCode)原文:Java實現二維碼QRCode的編碼和解碼 ( http://www.linuxidc.com/Linux/2012-08/68358.htm ),今發現又一優秀的開源利器-- ZXing,相比而言它更加靈活方便,可以實現多種編碼格式。

全文目錄:

  • 基本介紹
  • 二維碼(比如: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.jar
  • zxing-j2se.jar

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/8月/16日/條形碼&二維碼之開源利器ZXing圖文介紹

有關各種手機系統的應用,有興趣的朋友可以下載官方源碼包,包下有具體詳細的應用介紹。

【二】、 二維碼(QRCode)的編碼和解碼演示:

2-1. 編碼示例:

  1. package michael.zxing;   
  2.   
  3. import java.io.File;   
  4. import java.util.Hashtable;   
  5.   
  6. import com.google.zxing.BarcodeFormat;   
  7. import com.google.zxing.EncodeHintType;   
  8. import com.google.zxing.MultiFormatWriter;   
  9. import com.google.zxing.client.j2se.MatrixToImageWriter;   
  10. import com.google.zxing.common.BitMatrix;   
  11. import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;   
  12.   
  13. /**  
  14.  * @blog http://www.linuxidc.com  
  15.  * @author Michael  
  16.  */  
  17. public class ZxingEncoderHandler {   
  18.   
  19.     /**  
  20.      * 編碼  
  21.      * @param contents  
  22.      * @param width  
  23.      * @param height  
  24.      * @param imgPath  
  25.      */  
  26.     public void encode(String contents, int width, int height, String imgPath) {   
  27.         Hashtable<Object, Object> hints = new Hashtable<Object, Object>();   
  28.         // 指定糾錯等級   
  29.         hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);   
  30.         // 指定編碼格式   
  31.         hints.put(EncodeHintType.CHARACTER_SET, "GBK");   
  32.         try {   
  33.             BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,   
  34.                     BarcodeFormat.QR_CODE, width, height, hints);   
  35.   
  36.             MatrixToImageWriter   
  37.                     .writeToFile(bitMatrix, "png"new File(imgPath));   
  38.   
  39.         } catch (Exception e) {   
  40.             e.printStackTrace();   
  41.         }   
  42.     }   
  43.   
  44.     /**  
  45.      * @param args  
  46.      */  
  47.     public static void main(String[] args) {   
  48.         String imgPath = "d:/test/twocode/michael_zxing.png";   
  49.         String contents = "Hello Michael(大大),welcome to Zxing!"  
  50.                 + "\nMichael’s blog [ http://www.linuxidc.com ]"  
  51.                 + "\nEMail [ [email protected] ]" + "\nTwitter [ @suncto ]";   
  52.         int width = 300, height = 300;   
  53.         ZxingEncoderHandler handler = new ZxingEncoderHandler();   
  54.         handler.encode(contents, width, height, imgPath);   
  55.   
  56.         System.out.println("Michael ,you have finished zxing encode.");   
  57.     }   
  58. }  

運行後生成的二維碼圖片如下:

Copyright © Linux教程網 All Rights Reserved