繼前面介紹的一個日本開源軟件(該軟件只能實現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包:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2012年資料/8月/16日/條形碼&二維碼之開源利器ZXing圖文介紹
有關各種手機系統的應用,有興趣的朋友可以下載官方源碼包,包下有具體詳細的應用介紹。
【二】、 二維碼(QRCode)的編碼和解碼演示:
2-1. 編碼示例:
- package michael.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://www.linuxidc.com
- * @author Michael
- */
- public class ZxingEncoderHandler {
-
- /**
- * 編碼
- * @param contents
- * @param width
- * @param height
- * @param imgPath
- */
- public void encode(String contents, int width, int height, String imgPath) {
- Hashtable<Object, Object> hints = new Hashtable<Object, 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 = "d:/test/twocode/michael_zxing.png";
- String contents = "Hello Michael(大大),welcome to Zxing!"
- + "\nMichael’s blog [ http://www.linuxidc.com ]"
- + "\nEMail [ [email protected] ]" + "\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.");
- }
- }
運行後生成的二維碼圖片如下: