php 生成條形碼

條形碼(barcode)是將寬度不等的多個黑條和空白很魂,按照一定的編碼規(guī)則排列,用以表達一組信息的圖形標(biāo)識符。

這里采用php實現(xiàn)饱溢,支持大多數(shù)的碼制。

條碼長度

Code128,Code39 Extended, Code93 Extended 支持全全ASCII碼走芋。

Code128有A绩郎、B、C三種字符集翁逞,每種字符集支持一部分肋杖,大致是這樣的,

A字符集支持支持AZ 26個大寫字母挖函、09 9個數(shù)字及一些特殊字符状植;
B字符集支持支持AZ 26個大小寫字母、09 9個數(shù)字及一些特殊字符怨喘;
C字符集支持純數(shù)字字符津畸,支持0`9 9個數(shù)字,而且是偶數(shù)必怜,如果是奇數(shù)肉拓,生成條碼時自動在前面加0;最大長度純字符為32位梳庆,純字符加特殊符號炎44位暖途。EAN/UCC 128 同 Code 128.

CODE128碼是廣泛應(yīng)用在企業(yè)內(nèi)部管理、生產(chǎn)流程膏执、物流控制系統(tǒng)方面的條碼碼制驻售,由于其優(yōu)良的特性在管理信息系統(tǒng)的設(shè)計中被廣泛使用,CODE128碼是應(yīng)用最廣泛的條碼碼制之一更米。

CODE128碼是1981年引入的一種高密度條碼欺栗,CODE128 碼可表示從 ASCII 0 到ASCII 127 共128個字符,故稱128碼。其中包含了數(shù)字纸巷、字母和符號字符镇草。
  Code 128碼與Code 39碼有很多的相近性,都廣泛運用在企業(yè)內(nèi)部管理瘤旨、生產(chǎn)流程梯啤、物流控制系統(tǒng)方面。不同的在于Code 128比Code 39能表現(xiàn)更多的字符存哲,單位長度里的編碼密度更高因宇。當(dāng)單位長度里不能容下Code 39編碼或編碼字符超出了Code 39的限制時,就可選擇Code 128來編碼祟偷。

Code39察滑,Code93支持的范圍為09數(shù)字字符及AZ 大寫字母和‘/’,‘+’修肠,‘%’贺辰,‘$’,‘-’嵌施,‘.’及空格饲化,長度理論上沒有限制。

Code39 Extended, Code93 Extended 不支持‘-’吗伤,‘.’吃靠,其它和39 93一樣。

EAN8,EAN13,EAN Ext,UPC A,UPC E,UPC Ext支持的范圍為0`9數(shù)字字符足淆,EAN8長度為8巢块,EAN13長度為13,EAN8 Ext長度為10或者13巧号,EAN13 Ext長度為15或者18族奢,UPCA長度為12,UPCE長度為8裂逐,UPCE Ext長度為10或者13歹鱼,UPCA Ext長度為14或者17。

Bookland,ISSN卜高,ISSN可能支持數(shù)字以外的其它字符弥姻,本中間件支持請參考“關(guān)于Bookland(ISBN)和ISSN”部分的說明。

Code11 支持的范圍為0`9數(shù)字字符及‘-’掺涛,長度理論上沒有限制庭敦。

Codabar支持的范圍為0`9數(shù)字字符及‘A’,‘B’薪缆,‘C’秧廉,‘D’伞广,‘-’,‘.’疼电,‘/’嚼锄,‘:’,‘+’蔽豺,‘$’区丑,開始和結(jié)尾字符必須是‘A’,‘B’修陡,‘C’沧侥,‘D’中的字符,長度理論上沒有限制魄鸦。

MSI,Code 2of5 支持的范圍為0`9數(shù)字字符宴杀,長度理論上沒有限制。

PostNet支持的范圍為0`9數(shù)字字符拾因,長度為5位旺罢,9位,或者11位盾致,本開發(fā)包支持帶有非數(shù)字的格式主经,如12345-8012荣暮,使用更方便庭惜。

Matrix 25 (矩陣25碼) 支持的范圍為0`9數(shù)字字符,長度為13位穗酥。

安裝所需的代碼庫

composer require codeitnowin/barcode

相關(guān)代碼(具體展示在后面)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;


use CodeItNow\BarcodeBundle\Utils\BarcodeGenerator;
use CodeItNow\BarcodeBundle\Utils\QrCode;

class BarCodeController extends Controller
{
    public function index()
    {

        echo '<p>Example - QrCode</p>';
        $qrCode = new QrCode();
        $qrCode
            ->setText('https://www.php.net/manual/zh/')
            ->setSize(300)
            ->setPadding(10)
            ->setErrorCorrection('high')
            ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
            ->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
            ->setLabel('https://www.php.net/')
            ->setLabelFontSize(16)
            ->setImageType(QrCode::IMAGE_TYPE_PNG);
        echo '<img src="data:' . $qrCode->getContentType() . ';base64,' . $qrCode->generate() . '" />';

        echo '<hr>';
        echo '<p>Example - Code128</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("0123456789");
        $barcode->setType(BarcodeGenerator::Code128);
        $barcode->setScale(2);
        $barcode->setThickness(25);
        $barcode->setFontSize(10);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Code11</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("0123456789");
        $barcode->setType(BarcodeGenerator::Code11);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Code39</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("0123456789");
        $barcode->setType(BarcodeGenerator::Code39);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Code39Extended</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("0123456789");
        $barcode->setType(BarcodeGenerator::Code39Extended);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Ean128</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("00123456789012345675");
        $barcode->setType(BarcodeGenerator::Ean128);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Gs1128</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("00123456789012345675");
        $barcode->setType(BarcodeGenerator::Gs1128);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Gs1128</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("4157707266014651802001012603068039000000006377069620171215");
        $barcode->setType(BarcodeGenerator::Gs1128);
        $barcode->setNoLengthLimit(true);
        $barcode->setAllowsUnknownIdentifier(true);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - I25</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("00123456789012345675");
        $barcode->setType(BarcodeGenerator::I25);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Isbn</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("0012345678901");
        $barcode->setType(BarcodeGenerator::Isbn);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Msi</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("0012345678901");
        $barcode->setType(BarcodeGenerator::Msi);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Postnet</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("01234567890");
        $barcode->setType(BarcodeGenerator::Postnet);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - S25</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("012345678901");
        $barcode->setType(BarcodeGenerator::S25);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Upca</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("012345678901");
        $barcode->setType(BarcodeGenerator::Upca);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

        echo '<hr>';
        echo '<p>Example - Upce</p>';
        $barcode = new BarcodeGenerator();
        $barcode->setText("012345");
        $barcode->setType(BarcodeGenerator::Upce);
        $code = $barcode->generate();
        echo '<img src="data:image/png;base64,' . $code . '" />';

    }
}

結(jié)果展示(代碼在最后):

Example - QrCode

image.png

Example - Code128

image.png

Example - Code11

image.png

Example - Code39

image.png

Example - Code39Extended

image.png

Example - Ean128

image.png

Example - Gs1128

image.png

Example - Gs1128

image.png

Example - I25

image.png

Example - Isbn

image.png

Example - Msi

image.png

Example - Postnet

image.png

Example - S25

image.png

Example - Upca

image.png

Example - Upce

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末护赊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砾跃,更是在濱河造成了極大的恐慌骏啰,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抽高,死亡現(xiàn)場離奇詭異判耕,居然都是意外死亡,警方通過查閱死者的電腦和手機翘骂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門壁熄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人碳竟,你說我怎么就攤上這事草丧。” “怎么了莹桅?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵昌执,是天一觀的道長。 經(jīng)常有香客問我,道長懂拾,這世上最難降的妖魔是什么煤禽? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮岖赋,結(jié)果婚禮上呜师,老公的妹妹穿的比我還像新娘。我一直安慰自己贾节,他們只是感情好汁汗,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栗涂,像睡著了一般知牌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斤程,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天角寸,我揣著相機與錄音,去河邊找鬼忿墅。 笑死扁藕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疚脐。 我是一名探鬼主播亿柑,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼棍弄!你這毒婦竟也來了望薄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呼畸,失蹤者是張志新(化名)和其女友劉穎痕支,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛮原,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡卧须,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了儒陨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片花嘶。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖框全,靈堂內(nèi)的尸體忽然破棺而出察绷,到底是詐尸還是另有隱情,我是刑警寧澤津辩,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布拆撼,位于F島的核電站容劳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闸度。R本人自食惡果不足惜竭贩,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望莺禁。 院中可真熱鬧留量,春花似錦、人聲如沸哟冬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浩峡。三九已至可岂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翰灾,已是汗流浹背缕粹。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纸淮,地道東北人平斩。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像咽块,于是被迫代替她去往敵國和親绘面。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔糜芳,今天18年5月份再次想寫文章飒货,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,762評論 2 9
  • 文/拾傷青年 云霧彌繞 我仿佛來到天上行走 那遠處的迦南雪峰 終年都在陽光照耀之下 綻放著刺眼的光輝 白日里 蔚藍...
    拾傷青年閱讀 255評論 0 5
  • 今天笑來老師再次提及“注意力”這個概念,雖然此概念被提及過無數(shù)次峭竣。每次被提及的時候也感覺自己知道甚至真的有種“聽膩...
    我是林路閱讀 236評論 0 0
  • 我好像答應(yīng)過你/要和你 一起/走上那條美麗的山路/你說 /那坡上種滿了新茶/還有細密的相思樹/我好像答應(yīng)過你/在一...
    剌剌秧閱讀 2,303評論 3 6