PHP 生成條形碼&二維碼


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

這里采用php實現,支持大多數的碼制。

條碼長度

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

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

A字符集支持支持AZ 26個大寫字母、09 9個數字及一些特殊字符;
B字符集支持支持AZ 26個大小寫字母、09 9個數字及一些特殊字符;
C字符集支持純數字字符,支持0`9 9個數字,而且是偶數,如果是奇數,生成條碼時自動在前面加0;最大長度純字符為32位,純字符加特殊符號炎44位。EAN/UCC 128 同 Code 128.

CODE128碼是廣泛應用在企業內部管理、生產流程、物流控制系統方面的條碼碼制,由於其優良的特性在管理信息系統的設計中被廣泛使用,CODE128碼是應用最廣泛的條碼碼制之一。

CODE128碼是1981年引入的一種高密度條碼,CODE128 碼可表示從 ASCII 0 到ASCII 127 共128個字符,故稱128碼。其中包含了數字、字母和符號字符。
Code 128碼與Code 39碼有很多的相近性,都廣泛運用在企業內部管理、生產流程、物流控制系統方面。不同的在於Code 128比Code 39能表現更多的字符,單位長度里的編碼密度更高。當單位長度里不能容下Code 39編碼或編碼字符超出了Code 39的限制時,就可選擇Code 128來編碼。

Code39,Code93支持的范圍為09數字字符及AZ 大寫字母和‘/’,‘+’,‘%’,‘$’,‘-’,‘.’及空格,長度理論上沒有限制。

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

EAN8,EAN13,EAN Ext,UPC A,UPC E,UPC Ext支持的范圍為0`9數字字符,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可能支持數字以外的其它字符,本中間件支持請參考“關於Bookland(ISBN)和ISSN”部分的說明。

Code11 支持的范圍為0`9數字字符及‘-’,長度理論上沒有限制。

Codabar支持的范圍為0`9數字字符及‘A’,‘B’,‘C’,‘D’,‘-’,‘.’,‘/’,‘:’,‘+’,‘$’,開始和結尾字符必須是‘A’,‘B’,‘C’,‘D’中的字符,長度理論上沒有限制。

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

PostNet支持的范圍為0`9數字字符,長度為5位,9位,或者11位,本開發包支持帶有非數字的格式,如12345-8012,使用更方便。

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

安裝所需的代碼庫

composer require codeitnowin/barcode

 

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

<?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 . '" />';

        // i15為偶數
        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 . '" />';

    }
}

 

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

Example – QrCode

PHP  生成條形碼


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

 

轉載:https://www.iacblog.com/2020/07/1141.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM