當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式大雜燴
[導(dǎo)讀]一、zint1.介紹Zint是一個軟件,允許在任何廣泛的公共領(lǐng)域條形碼標(biāo)準(zhǔn)中輕松編碼數(shù)據(jù),并允許將這種功能集成到您自己的程序中。Zint項目的目標(biāo)是提供一個完全跨平臺的開源條形碼生成解決方案,目前包含了:一個基于Qt的基礎(chǔ)GUI一個命令行工具一個允許用戶調(diào)用API使用Zint的庫...

一、zint

1. 介紹

Zint是一個軟件,允許在任何廣泛的公共領(lǐng)域條形碼標(biāo)準(zhǔn)中輕松編碼數(shù)據(jù),并允許將這種功能集成到您自己的程序中。

Zint項目的目標(biāo)是提供一個完全跨平臺的開源條形碼生成解決方案,目前包含了:

  • 一個基于Qt的基礎(chǔ)GUI
  • 一個命令行工具
  • 一個允許用戶調(diào)用API使用Zint的庫

2. 下載

zint在github的倉庫地址為:https://github.com/zint/zint,使用過程中發(fā)現(xiàn)github上的版本才到2.4.2,太老了。

zint主要維護(hù)的是sourceforge倉庫,地址為:https://sourceforge.net/projects/zint/,可以下載到最新的「2.10.0」版本,也可以使用git拉?。?/p>git?clone?git://git.code.sf.net/p/zint/code?zint-code

3. 文檔

文檔地址為:http://www.zint.org.uk。

二、安裝

1. macOS

brew?install?zint

2. linux(從源碼安裝)

下載源碼:

git?clone?git://git.code.sf.net/p/zint/code?zint-code
提前安裝好cmake:

sudo?apt-get?install?cmake
新建編譯文件夾:

cd?zint
mkdir?build
安裝:

cd?build
cmake?..
make
sudo?make?install

3. libzint庫安裝檢查

linux默認(rèn)安裝位置:

/usr/local/libzint.so
mac默認(rèn)安裝位置:

/usr/local/lib/libzint.dylib

4. zint工具安裝檢查

zint?-h

三、zint命令行工具的使用

1.輸入數(shù)據(jù)

使用-d參數(shù)輸入數(shù)據(jù):

zint?-d?"helloworld"
執(zhí)行之后在當(dāng)前目錄生成圖片out.png:也可以直接從文件中讀取數(shù)據(jù):

zint?-i?./hello.txt

2. 輸出數(shù)據(jù)

使用-o參數(shù)指定輸出文件名:

zint?-o?hello.png?-d?"hello?world"

3. 選擇條形碼類型

使用-b參數(shù)指定條形碼類型,支持的類型列表可以使用如下列表查看:

zint?-t
生成二維碼(QRCODE):

zint?-b?58?-o?hello.png?-d?"hello?world"
生成的二維碼圖片為42x42:

4. 調(diào)整圖片大小

圖片自身大小

條形碼通過--height=<>參數(shù)來調(diào)整高度。

二維碼通過--vers=<>參數(shù)指定版本來調(diào)整大小,版本與大小的對應(yīng)如下表:

生成版本為4的二維碼:

zint?-b?58?--vers=4?-d?"hello?world"
生成的二維碼圖片為66x66(「默認(rèn)已經(jīng)放大1倍了」):

放大

使用-scale=參數(shù)和默認(rèn)x維的倍數(shù)來改變圖片大小,默認(rèn)是1,這里修改為2:

zint?-b?58?--vers=4?--scale=2?-d?"hello?world"
生成的二維碼大小為132x132:

四、libzint庫

1. 使用方法

使用時需要包含頭文件:

#include?
編譯時需要帶上參數(shù)-lzint和動態(tài)庫路徑:

gcc?main.c?-lzint?-Wl,-rpath="/usr/local/lib"

2. 符號類型

symbol結(jié)構(gòu)體中的 ?symbology 成員表示符號類型。

一維碼(BARCODE_CODE128)

單個尺寸的符號通常指條形碼,由若干條和若干不同寬度的空白組成。

常用類型是 「Standard Code 128 (ISO 15417)」。這種碼支持ASCII全字符,并使用三模系統(tǒng)將數(shù)據(jù)壓縮成較小的符號,是Zint默認(rèn)使用的符號類型。

二維碼(BARCODE_QRCODE)

QRCode全稱Quick Reponse COde,由Denso開發(fā)。

根據(jù)下表設(shè)置--secure=參數(shù)或者設(shè)置option_1可以獲得四種級別的錯誤糾正:符號的大小可以使用--vers=<>參數(shù)或者通過option_2參數(shù)設(shè)置需要的二維碼版本(1-40),生成的二維碼大小如之前的表所示。

3. API

查詢當(dāng)前l(fā)ibzint庫版本

函數(shù)原型:

int?ZBarcode_Version();
使用示例:

printf("libzint?version:%d\n",?ZBarcode_Version());

符號結(jié)構(gòu)體創(chuàng)建/刪除

(1) 創(chuàng)建并初始化一個符號結(jié)構(gòu)體

?/*?Create?and?initialize?a?symbol?structure?*/
ZINT_EXTERN?struct?zint_symbol?*ZBarcode_Create(void);
(2) 釋放并刪除一個符號結(jié)構(gòu)體

/*?Create?and?initialize?a?symbol?structure?*/
ZINT_EXTERN?struct?zint_symbol?*ZBarcode_Create(void);

生成條形碼(默認(rèn))

(1) 編碼一個條形碼:

/*?Encode?a?barcode.?If?`length`?is?0,?`source`?must?be?NUL-terminated.?*/
ZINT_EXTERN?int?ZBarcode_Encode(struct?zint_symbol?*symbol,?const?unsigned?char?*source,?int?length);
(2) 使用文件中傳入的內(nèi)容編碼一個條形碼:

/*?Encode?a?barcode?using?input?data?from?file?`filename`?*/
ZINT_EXTERN?int?ZBarcode_Encode_File(struct?zint_symbol?*symbol,?const?char?*filename);

輸出條形碼(輸出圖片)

/*?Output?a?previously?encoded?symbol?to?file?`symbol->outfile`?*/
ZINT_EXTERN?int?ZBarcode_Print(struct?zint_symbol?*symbol,?int?rotate_angle);


/*?Encode?and?output?a?symbol?to?file?`symbol->outfile`?*/
ZINT_EXTERN?int?ZBarcode_Encode_and_Print(struct?zint_symbol?*symbol,?const?unsigned?char?*source,?int?length,
????????????????????int?rotate_angle)
;

/*?Encode?a?symbol?using?input?data?from?file?`filename`?and?output?to?file?`symbol->outfile`?*/
ZINT_EXTERN?int?ZBarcode_Encode_File_and_Print(struct?zint_symbol?*symbol,?const?char?*filename,
????????????????????int?rotate_angle)
;

輸出到緩沖區(qū)(位圖bitmap)

/*?Output?a?previously?encoded?symbol?to?memory?as?raster?(`symbol->bitmap`)?*/
ZINT_EXTERN?int?ZBarcode_Buffer(struct?zint_symbol?*symbol,?int?rotate_angle);

/*?Encode?and?output?a?symbol?to?memory?as?raster?(`symbol->bitmap`)?*/
ZINT_EXTERN?int?ZBarcode_Encode_and_Buffer(struct?zint_symbol?*symbol,?const?unsigned?char?*source,?int?length,
????????????????????int?rotate_angle)
;

/*?Encode?a?symbol?using?input?data?from?file?`filename`?and?output?to?memory?as?raster?(`symbol->bitmap`)?*/
ZINT_EXTERN?int?ZBarcode_Encode_File_and_Buffer(struct?zint_symbol?*symbol,?const?char?*filename,
????????????????????int?rotate_angle)
;

錯誤碼

/*?Warning?and?error?conditions?(API?return?values)?*/
#define?ZINT_WARN_INVALID_OPTION????????2???/*?Invalid?option?given?but?overridden?by?Zint?*/
#define?ZINT_WARN_USES_ECI??????????????3???/*?Automatic?ECI?inserted?by?Zint?*/
#define?ZINT_WARN_NONCOMPLIANT??????????4???/*?Symbol?created?not?compliant?with?standards?*/
#define?ZINT_ERROR??????????????????????5???/*?Warn/error?marker,?not?returned?*/
#define?ZINT_ERROR_TOO_LONG?????????????5???/*?Input?data?wrong?length?*/
#define?ZINT_ERROR_INVALID_DATA?????????6???/*?Input?data?incorrect?*/
#define?ZINT_ERROR_INVALID_CHECK????????7???/*?Input?check?digit?incorrect?*/
#define?ZINT_ERROR_INVALID_OPTION???????8???/*?Incorrect?option?given?*/
#define?ZINT_ERROR_ENCODING_PROBLEM?????9???/*?Internal?error?(should?not?happen)?*/
#define?ZINT_ERROR_FILE_ACCESS??????????10??/*?Error?opening?output?file?*/
#define?ZINT_ERROR_MEMORY???????????????11??/*?Memory?allocation?(malloc)?failure?*/
#define?ZINT_ERROR_FILE_WRITE???????????12??/*?Error?writing?to?output?file?*/
#define?ZINT_ERROR_USES_ECI?????????????13??/*?Error?counterpart?of?warning?if?WARN_FAIL_ALL?set?(see?below)?*/
#define?ZINT_ERROR_NONCOMPLIANT?????????14??/*?Error?counterpart?of?warning?if?WARN_FAIL_ALL?set?*/

3. demo

生成條形碼

#include?
#include?

int?main(int?argc,?char?*argv[])
{
????int?ret;
????struct?zint_symbol?*symbol;

????printf("libzint?version:%d\n",?ZBarcode_Version());

????symbol?=?ZBarcode_Create();
????if?(!symbol)?{
????????printf("symbol?create?fail!(%s)\r\n",?symbol->errtxt);
????????return?-1;
????}

????ret?=?ZBarcode_Encode(symbol,?argv[1],?0);
????if?(ret?!=?0)?{
????????printf("ZBarcode?encode?fail,?ret?is?%d(%s)\r\n",?ret,?symbol->errtxt);
????????ZBarcode_Delete(symbol);
????????return?-1;
????}

????ret?=?ZBarcode_Print(symbol,?0);
????if?(ret?!=?0)?{
????????printf("ZBarcode?print?fail,?ret?is?%d(%s)\r\n",?ret,?symbol->errtxt);
????????ZBarcode_Delete(symbol);
????????return?-1;
????}

????ZBarcode_Delete(symbol);

????printf("ZBarcode?delete.\r\n");

????return?0;
}
編譯:

gcc?main.c?-lzint?-Wl,-rpath="/usr/local/lib"
運行:

./a.out?helloworld
生成的條形碼如圖:

生成二維碼

添加如下設(shè)置類型的代碼:

symbol->symbology?=?BARCODE_QRCODE;
或者

symbol->symbology?=?58;
默認(rèn)生成的二維碼圖片大小是42x42:

生成指定尺寸的二維碼

zint命令行工具使用--vers=<>參數(shù)設(shè)置需要的「二維碼版本」(1-40),調(diào)用 libzint 庫時「設(shè)置 option_2 參數(shù)」即可:

symbol->option_2??=?4;
再次編譯運行,生成的二維碼大小為66x66(「默認(rèn)已經(jīng)放大1倍了」):同時,可以設(shè)置放大倍數(shù)來進(jìn)一步調(diào)整二維碼大小,比如這里設(shè)置放大倍數(shù)為4:

symbol->scale?=?4;
重新編譯運行,生成的二維碼大小為 264x264:

往期推薦:

國產(chǎn)芯片替代STM32的一些經(jīng)驗分享

深入理解嵌入式中重要的編程模型

在公眾號聊天界面回復(fù)1024,可獲取嵌入式資源;回復(fù)?m?,可查看文章匯總。


點擊閱讀原文,查看更多分享

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉