1. 程式人生 > >Java 建立/識別條形碼、二維碼

Java 建立/識別條形碼、二維碼

條形碼(Barcode)是將寬度不等的多個黑條和空白,按照一定的編碼規則排列,用以表達一組資訊的圖形識別符號。常用於標示物品的生產國、製造廠家、商品名稱、生產日期、圖書分類號、郵件起止地點、類別、日期等資訊,廣泛應用於各個領域。常見的包括一維條碼(條碼)、二維條碼(二維碼)、彩色條碼,在具體碼制上可分為多種不同型別的條碼,如UPC(統一產品程式碼,只能以數字表示)、Code 3(能表示字母、數字和其它一些符號共43個字元)、Code 128(表示高密度資料,字串可變長,符號內含校驗碼)、Codabar(庫德巴碼,以起始/終止符a,b,c d四個字元、數字0 - 9,字元$、+、- 組成,可變長度,沒有校驗位)、QR碼(呈正方形,常見以黑白兩色組成。) 、PDF417(多行組成的條形碼,可儲存大量資料)、複合條碼(新出現的碼制型別,由兩個很靠近的條碼符號組成,包含互相關聯的資料)等。以下內容,將介紹通過Java程式來建立、讀取條碼的方法。示例要點包括:

  • 建立一維條形碼(Barcode)
  • 建立二維碼(QR Code)
  • 讀取/識別條碼

使用工具:Free Spire.Barcode for Java (免費版)

這裡使用的工具,支援多種條碼型別,包括條形碼,二維碼和郵政碼,多達38種條碼型別,如CODE 25、CODABAR、CODE 11、INTERLEAVED 25、CODE 39、CODE 39 EXTENDED、CODE 93、CODE 93 EXTENDED、CODE 128、EAN 8、EAN 13、EAN 128、EAN 14、SCC 14、SSCC 18、ITF 14、ITF 6、UPCA、UPCE、POST NET、SINGAPORE POST 4 STATE、PLANET、MSI、RSS 14、RSS 14 TRUNCATED、RSS LIMITED、RSS EXPANDED、USPS、SWISS POST PARCEL、PZN、OPC、DEUTSCHE POST IDENTCODE、DEUTSCHE POST 、LEITCODE、ROYAL MAIL 4 STATE、DATA MATRIX、QR CODE、PDF 417、PDF 417 MACRO等,可設定條碼顏色,邊框,邊距,寬度以及各種屬性,資料樣式等等。

Jar檔案獲取及匯入:

方法1:通過官網下載jar檔案包。下載後,解壓檔案,並將lib資料夾下的Spire.Barcode.jar檔案匯入到java程式。參考如下匯入效果:

 

方法2:可通過maven倉庫安裝匯入。可參考匯入方法。

 

Java 程式碼示例

【示例1】建立一維條形碼

import com.spire.barcode.BarCodeGenerator;
import com.spire.barcode.BarCodeType;
import com.spire.barcode.BarcodeSettings;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class CreateBarcode {
    public static void main(String[] args) throws IOException {
        BarcodeSettings settings = new BarcodeSettings();//建立BarcodeSettings例項
        settings.setType(BarCodeType.Code_128);//指定條碼型別
        settings.setData("123456789");//設定條碼資料
        settings.setData2D("123456789");//設定條碼顯示資料
        settings.setShowTextOnBottom(true);//設定資料文字顯示在條碼底部
        settings.setX(0.8f);//設定黑白條寬度
        settings.setImageHeight(50);//設定生成的條碼圖片高度
        settings.setImageWidth(70);//設定生成的條碼圖片寬度
        settings.hasBorder(true);//設定邊框可見
        settings.setBorderColor(new Color(135,206,250));//設定條碼邊框顏色
        settings.setBorderWidth(1);//設定條碼邊框寬度
        settings.setBackColor(new Color(240,255,255));//設定條碼背景色

        BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);//建立BarCodeGenerator例項
        BufferedImage bufferedImage = barCodeGenerator.generateImage();//根據settings生成影象資料,儲存至BufferedImage例項
        ImageIO.write(bufferedImage, "png", new File("CODE128.png"));//儲存條碼為PNG圖片
        System.out.println("Complete!");
    }
}

條碼建立效果:

 

 

【示例2】建立二維碼

import com.spire.barcode.*;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class CreateQR {
    public static void main(String[] args) throws IOException {

        BarcodeSettings settings = new BarcodeSettings();//建立BarcodeSettings例項
        settings.setType(BarCodeType.QR_Code);//設定條碼型別為QR二維碼
        settings.setData("Hello 123456789");//設定二維碼資料
        settings.setData2D("Hello 123456789");//設定二維碼顯示資料
        settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);//設定資料型別
        settings.setX(1.0f);//設定二維碼模型寬度
        settings.setQRCodeECL(QRCodeECL.H);//設定二維碼糾錯級別
        settings.setImageWidth(50);//設定生成的二維碼圖片寬度
        settings.setImageHeight(50);//設定生成的二維碼圖片高度
        settings.hasBorder(false);//設定二維碼邊框不可見

        BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);//建立BarCodeGenerator例項
        BufferedImage bufferedImage = barCodeGenerator.generateImage();//根據settings生成影象資料,儲存至BufferedImage例項
        ImageIO.write(bufferedImage, "png", new File("QRCode.png"));//儲存二維碼圖片為PNG格式
        System.out.println("Complete!");
    }
}

二維碼建立效果:

 

 

【示例3】讀取/識別條碼

import com.spire.barcode.*;

public class ScanBarcode {
    public static void main(String[] args) throws Exception{
        //使用scan方法從圖片中識別Code 128條形碼
        String[] datas = BarcodeScanner.scan("CODE128.png", BarCodeType.Code_128);
        System.out.print(datas[0]);
    }
}

識別結果:

 

(本文完)

 

轉載請註明出處