條形碼(barcode)是將寬度不等的多個黑條和空白很魂,按照一定的編碼規(guī)則排列,用以表達一組信息的圖形標(biāo)識符。
這里采用php實現(xiàn)饱溢,支持大多數(shù)的碼制。
條碼長度
Code128,Code39 Extended, Code93 Extended 支持全全ASCII碼走芋。
Code128有A绩郎、B、C三種字符集翁逞,每種字符集支持一部分肋杖,大致是這樣的,
A字符集支持支持AZ 26個大寫字母挖函、0
9 9個數(shù)字及一些特殊字符状植;
B字符集支持支持AZ 26個大小寫字母、0
9 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支持的范圍為0
9數(shù)字字符及A
Z 大寫字母和‘/’,‘+’修肠,‘%’贺辰,‘$’,‘-’嵌施,‘.’及空格饲化,長度理論上沒有限制。
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é)果展示(代碼在最后):