Java創(chuàng)建、識(shí)別條形碼和二維碼方法示例
前言
條形碼(Barcode)是將寬度不等的多個(gè)黑條和空白,按照一定的編碼規(guī)則排列,用以表達(dá)一組信息的圖形標(biāo)識(shí)符。常用于標(biāo)示物品的生產(chǎn)國(guó)、制造廠家、商品名稱(chēng)、生產(chǎn)日期、圖書(shū)分類(lèi)號(hào)、郵件起止地點(diǎn)、類(lèi)別、日期等信息,廣泛應(yīng)用于各個(gè)領(lǐng)域。常見(jiàn)的包括一維條碼(條碼)、二維條碼(二維碼)、彩色條碼,在具體碼制上可分為多種不同類(lèi)型的條碼,如UPC(統(tǒng)一產(chǎn)品代碼,只能以數(shù)字表示)、Code 3(能表示字母、數(shù)字和其它一些符號(hào)共43個(gè)字符)、Code 128(表示高密度數(shù)據(jù),字符串可變長(zhǎng),符號(hào)內(nèi)含校驗(yàn)碼)、Codabar(庫(kù)德巴碼,以起始/終止符a,b,c d四個(gè)字符、數(shù)字0 - 9,字符$、+、- 組成,可變長(zhǎng)度,沒(méi)有校驗(yàn)位)、QR碼(呈正方形,常見(jiàn)以黑白兩色組成。) 、PDF417(多行組成的條形碼,可存儲(chǔ)大量數(shù)據(jù))、復(fù)合條碼(新出現(xiàn)的碼制類(lèi)型,由兩個(gè)很靠近的條碼符號(hào)組成,包含互相關(guān)聯(lián)的數(shù)據(jù))等。以下內(nèi)容,將介紹通過(guò)Java程序來(lái)創(chuàng)建、讀取條碼的方法。示例要點(diǎn)包括:
- 創(chuàng)建一維條形碼(Barcode)
- 創(chuàng)建二維碼(QR Code)
- 讀取/識(shí)別條碼
使用工具:Free Spire.Barcode for Java (免費(fèi)版)
這里使用的工具,支持多種條碼類(lèi)型,包括條形碼,二維碼和郵政碼,多達(dá)38種條碼類(lèi)型,如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等,可設(shè)置條碼顏色,邊框,邊距,寬度以及各種屬性,數(shù)據(jù)樣式等等。
Jar文件獲取及導(dǎo)入:
方法1:通過(guò)官網(wǎng)下載jar文件包。下載后,解壓文件,并將lib文件夾下的Spire.Barcode.jar文件導(dǎo)入到j(luò)ava程序。參考如下導(dǎo)入效果:
方法2:可通過(guò)maven倉(cāng)庫(kù)安裝導(dǎo)入??蓞⒖?a rel="external nofollow" target="_blank" >導(dǎo)入方法。
Java 代碼示例
【示例1】創(chuàng)建一維條形碼
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();//創(chuàng)建BarcodeSettings實(shí)例
settings.setType(BarCodeType.Code_128);//指定條碼類(lèi)型
settings.setData("123456789");//設(shè)置條碼數(shù)據(jù)
settings.setData2D("123456789");//設(shè)置條碼顯示數(shù)據(jù)
settings.setShowTextOnBottom(true);//設(shè)置數(shù)據(jù)文本顯示在條碼底部
settings.setX(0.8f);//設(shè)置黑白條寬度
settings.setImageHeight(50);//設(shè)置生成的條碼圖片高度
settings.setImageWidth(70);//設(shè)置生成的條碼圖片寬度
settings.hasBorder(true);//設(shè)置邊框可見(jiàn)
settings.setBorderColor(new Color(135,206,250));//設(shè)置條碼邊框顏色
settings.setBorderWidth(1);//設(shè)置條碼邊框?qū)挾?
settings.setBackColor(new Color(240,255,255));//設(shè)置條碼背景色
BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);//創(chuàng)建BarCodeGenerator實(shí)例
BufferedImage bufferedImage = barCodeGenerator.generateImage();//根據(jù)settings生成圖像數(shù)據(jù),保存至BufferedImage實(shí)例
ImageIO.write(bufferedImage, "png", new File("CODE128.png"));//保存條碼為PNG圖片
System.out.println("Complete!");
}
}
條碼創(chuàng)建效果:
【示例2】創(chuàng)建二維碼
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();//創(chuàng)建BarcodeSettings實(shí)例
settings.setType(BarCodeType.QR_Code);//設(shè)置條碼類(lèi)型為QR二維碼
settings.setData("Hello 123456789");//設(shè)置二維碼數(shù)據(jù)
settings.setData2D("Hello 123456789");//設(shè)置二維碼顯示數(shù)據(jù)
settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);//設(shè)置數(shù)據(jù)類(lèi)型
settings.setX(1.0f);//設(shè)置二維碼模型寬度
settings.setQRCodeECL(QRCodeECL.H);//設(shè)置二維碼糾錯(cuò)級(jí)別
settings.setImageWidth(50);//設(shè)置生成的二維碼圖片寬度
settings.setImageHeight(50);//設(shè)置生成的二維碼圖片高度
settings.hasBorder(false);//設(shè)置二維碼邊框不可見(jiàn)
BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);//創(chuàng)建BarCodeGenerator實(shí)例
BufferedImage bufferedImage = barCodeGenerator.generateImage();//根據(jù)settings生成圖像數(shù)據(jù),保存至BufferedImage實(shí)例
ImageIO.write(bufferedImage, "png", new File("QRCode.png"));//保存二維碼圖片為PNG格式
System.out.println("Complete!");
}
}
二維碼創(chuàng)建效果:
【示例3】讀取/識(shí)別條碼
import com.spire.barcode.*;
public class ScanBarcode {
public static void main(String[] args) throws Exception{
//使用scan方法從圖片中識(shí)別Code 128條形碼
String[] datas = BarcodeScanner.scan("CODE128.png", BarCodeType.Code_128);
System.out.print(datas[0]);
}
}
識(shí)別結(jié)果:
(本文完)
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- Java使用opencv識(shí)別二維碼的完整步驟
- java使用電腦攝像頭識(shí)別二維碼
- 不到十行實(shí)現(xiàn)javaCV圖片OCR文字識(shí)別
- Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別
- java實(shí)現(xiàn)騰訊ocr圖片識(shí)別接口調(diào)用
- java圖片識(shí)別文字的方法
- java實(shí)現(xiàn)圖片文字識(shí)別ocr
- java指紋識(shí)別以及谷歌圖片識(shí)別技術(shù)源碼
- Java基于直方圖應(yīng)用的相似圖片識(shí)別實(shí)例
- java實(shí)現(xiàn)識(shí)別二維碼圖片功能
相關(guān)文章
swagger注解@ApiModelProperty失效情況的解決
這篇文章主要介紹了swagger注解@ApiModelProperty失效情況的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Java中數(shù)學(xué)相關(guān)類(lèi)的使用教程
Java是一種廣泛使用的編程語(yǔ)言,它提供了許多數(shù)學(xué)運(yùn)算的函數(shù)和方法,使得開(kāi)發(fā)者可以輕松地進(jìn)行各種數(shù)學(xué)計(jì)算,下面這篇文章主要給大家介紹了關(guān)于Java中數(shù)學(xué)相關(guān)類(lèi)使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
springboot 使用Spring Boot Actuator監(jiān)控應(yīng)用小結(jié)
本篇文章主要介紹了springboot 使用Spring Boot Actuator監(jiān)控應(yīng)用小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
解決Mybatis?plus實(shí)體類(lèi)屬性與表字段不一致的問(wèn)題
這篇文章主要介紹了Mybatis?plus實(shí)體類(lèi)屬性與表字段不一致解決方法,文末給大家提到了Mybatis-plus中數(shù)據(jù)庫(kù)表名和表字段名的相關(guān)知識(shí),需要的朋友可以參考下2022-07-07
Java線程中的Thread.yield()詳細(xì)解析
這篇文章主要介紹了Java線程中的Thread.yield()詳細(xì)解析,yield()讓當(dāng)前線程從運(yùn)行狀態(tài)?轉(zhuǎn)為?就緒狀態(tài),以允許具有相同優(yōu)先級(jí)的其他線程獲得運(yùn)行機(jī)會(huì),需要的朋友可以參考下2023-11-11
在logback.xml中自定義動(dòng)態(tài)屬性的方法
這篇文章主要介紹了在logback.xml中自定義動(dòng)態(tài)屬性的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
Java Web項(xiàng)目中Spring框架處理JSON格式數(shù)據(jù)的方法
Spring MVC是個(gè)靈活的框架,返回JSON數(shù)據(jù)的也有很多五花八門(mén)的方式,這里我們來(lái)整理一個(gè)最簡(jiǎn)單的Java Web項(xiàng)目中Spring框架處理JSON格式數(shù)據(jù)的方法:2016-05-05
JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解
這篇文章主要介紹了JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10

