歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 條形碼/二維碼之開源利器ZXing圖文介紹

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

日期:2017/3/1 10:12:29   编辑:Linux編程

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

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

Copyright © Linux教程網 All Rights Reserved