นี่คือเครื่องสร้างบาร์โค้ดที่ใช้งานง่าย ไม่บวม และไม่ขึ้นกับเฟรมเวิร์กใน PHP ใช้การพึ่งพาผู้แต่งเป็นศูนย์ (!) และมีไฟล์เพียงไม่กี่ไฟล์เท่านั้น อาจเป็นเพราะเหตุนี้จึงเป็นเครื่องสร้างบาร์โค้ดที่มีการดาวน์โหลดมากที่สุดสำหรับ PHP บน Packagist -
สร้างภาพ SVG, PNG, JPG และ HTML จากมาตรฐานบาร์โค้ด 1D ที่ใช้มากที่สุด
ไม่รองรับบาร์โค้ด 2 มิติ เช่น รหัส QR
เราสร้างเฉพาะส่วน 'แท่ง' ของบาร์โค้ด โดยไม่มีข้อความอยู่ใต้บาร์โค้ด หากคุณต้องการให้ข้อความของโค้ดอยู่ใต้บาร์โค้ด คุณสามารถเพิ่มลงในเอาต์พุตของแพ็คเกจนี้ได้ในภายหลัง
ติดตั้งผ่านผู้แต่ง:
composer require picqer/php-barcode-generator
หากคุณต้องการสร้างภาพ PNG หรือ JPG คุณต้องติดตั้งไลบรารี GD หรือ Imagick บนระบบของคุณด้วย สำหรับการแสดงผล SVG หรือ HTML จะไม่มีการขึ้นต่อกัน
คุณต้องการบาร์โค้ดสำหรับ "ประเภท" เฉพาะ (เช่น รหัส 128 หรือ UPC) ในรูปแบบรูปภาพเฉพาะ (เช่น PNG หรือ SVG)
ขั้นแรก เข้ารหัสสตริงที่คุณต้องการให้บาร์โค้ดเป็นออบเจ็กต์ Barcode
ด้วยบาร์โค้ดประเภทใดประเภทหนึ่ง
จากนั้น ใช้ตัวเรนเดอร์ตัวใดตัวหนึ่งเพื่อแสดงรูปภาพของแท่งในออบเจ็กต์ Barcode
"ประเภท" คือมาตรฐานที่กำหนดอักขระที่คุณสามารถเข้ารหัสได้ และแถบใดแสดงถึงอักขระตัวใด ประเภทที่ใช้มากที่สุดคือรหัส 128 และ EAN/UPC บาร์โค้ดแต่ละประเภทไม่สามารถเข้ารหัสอักขระทั้งหมดได้ และเครื่องสแกนบาร์โค้ดบางประเภทก็ไม่สามารถอ่านได้ทุกประเภท
<?phprequire 'vendor/autoload.php';// สร้างวัตถุบาร์โค้ดของการเข้ารหัส Code128.$barcode = (ใหม่ PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// ส่งออกบาร์โค้ดเป็น HTML ในเบราว์เซอร์ด้วย HTML Renderer$renderer = ใหม่ PicqerBarcodeRenderersHtmlRenderer();echo $renderer->render($บาร์โค้ด);
จะส่งผลให้เกิดความงามนี้:
โปรแกรมเรนเดอร์แต่ละคนมีตัวเลือกของตัวเอง ตัวอย่างเช่น คุณสามารถตั้งค่าความสูง ความกว้าง และสีของ PNG ได้:
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = ใหม่ PicqerBarcodeRenderersPngRenderer();$renderer ->setForegroundColor($colorRed);// บันทึก PNG ไปยังระบบไฟล์ด้วย widthFactor 3 (ความกว้างของบาร์โค้ด x 3) และความสูง 50pixelsfile_put_contents('barcode.png', $renderer->render($barcode, $barcode->getWidth() * 3, 50));
โปรแกรมเรนเดอร์รูปภาพที่ใช้ได้: SVG, PNG, JPG และ HTML
ทั้งหมดสอดคล้องกับ RendererInterface และมีเมธอด render()
เหมือนกัน ตัวเรนเดอร์บางตัวมีตัวเลือกพิเศษเช่นกันผ่านเมธอด set*()
วิธีการ render() ต้องการวัตถุบาร์โค้ด ความกว้าง และความสูง สำหรับรูปภาพ JPG/PNG คุณจะได้รับบาร์โค้ดที่ถูกต้องก็ต่อเมื่อคุณระบุความกว้างซึ่งเป็นปัจจัยของความกว้างของวัตถุบาร์โค้ด นั่นคือเหตุผลที่ตัวอย่างแสดง $barcode->getWidth() * 2
เพื่อทำให้รูปภาพกว้างขึ้น 2 เท่าในหน่วยพิกเซล จากนั้นความกว้างของข้อมูลบาร์โค้ด คุณ สามารถ กำหนดความกว้างเป็นตัวเลขได้ตามต้องการ และรูปภาพจะถูกปรับขนาดให้ดีที่สุดเท่าที่จะทำได้ แต่หากไม่มีการลดรอยหยัก มันจะไม่ถูกต้องสมบูรณ์
ตัวเรนเดอร์ HTML และ SVG สามารถรองรับความกว้างและความสูงได้ แม้กระทั่งแบบลอยตัว
นี่คือตัวเลือกทั้งหมดสำหรับตัวเรนเดอร์แต่ละตัว:
รูปภาพ SVG แบบเวกเตอร์ ให้คุณภาพการพิมพ์ดีที่สุด
$renderer = ใหม่ PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // กำหนดแถบเป็นสีแดง โดยค่าเริ่มต้นคือสีดำ ให้ค่าสีแดง เขียว และน้ำเงินเป็น 3 คูณ 0-255 $renderer->setBackgroundColor([0, 0, 255]); // กำหนดพื้นหลังเป็นสีฟ้า ค่าเริ่มต้นเป็นแบบโปร่งใส ให้ค่าสีแดง เขียว และน้ำเงินเป็น 3 คูณ 0-255 $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // เปลี่ยนเอาต์พุตที่จะใช้แบบอินไลน์ภายในเอกสาร HTML แทนที่จะเป็นรูปภาพ SVG แบบสแตนด์อโลน (ค่าเริ่มต้น)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // หากคุณต้องการบังคับใช้ค่าเริ่มต้น ให้สร้างรูปภาพ SVG แบบสแตนด์อโลน$renderer->render($barcode, 450.20, 75); // ส่วนรองรับความกว้างและความสูงลอยตัว
ตัวเลือกทั้งหมดสำหรับ PNG และ JPG เหมือนกัน
$renderer = ใหม่ PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // กำหนดสีให้กับแถบ ค่าเริ่มต้นคือสีดำ ให้ค่าสีแดง เขียว และน้ำเงินเป็น 3 คูณ 0-255 $renderer->setBackgroundColor([0, 255, 255]); // กำหนดสีให้กับพื้นหลัง โดยค่าเริ่มต้นเป็นแบบโปร่งใส (ใน PNG) หรือสีขาว (ใน JPG) ให้ค่าสีแดง เขียว และน้ำเงินเป็น 3 คูณ 0-255 $renderer->useGd(); // หากคุณติดตั้ง Imagick และ GD แล้ว แต่ต้องการใช้ GD$renderer->useImagick(); // หากคุณติดตั้ง Imagick และ GD แล้ว แต่ต้องการใช้ Imagick$renderer->render($barcode, 5, 40); // ตัวคูณความกว้าง (แต่ละแท่งมีความกว้างกี่พิกเซล) และความสูงเป็นพิกเซล
ให้ HTML เพื่อใช้แบบอินไลน์ในเอกสาร HTML แบบเต็ม
$renderer = ใหม่ PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // กำหนดแถบเป็นสีแดง โดยค่าเริ่มต้นคือสีดำ ให้ค่าสีแดง เขียว และน้ำเงินเป็น 3 คูณ 0-255 $renderer->setBackgroundColor([0, 0, 255]); // กำหนดพื้นหลังเป็นสีฟ้า ค่าเริ่มต้นเป็นแบบโปร่งใส ให้ค่าสีแดง เขียว และน้ำเงินเป็น 3 คูณ 0-255 $renderer->render($บาร์โค้ด, 450.20, 75); // ส่วนรองรับความกว้างและความสูงลอยตัว
กำหนด HTML ที่นี่ว่าบาร์โค้ดใช้ความกว้างและความสูงเต็ม เพื่อใส่ในคอนเทนเนอร์/div ที่มีขนาดคงที่
$renderer = ใหม่ PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // กำหนดแถบเป็นสีแดง โดยค่าเริ่มต้นคือสีดำ ให้ค่าสีแดง เขียว และน้ำเงินเป็น 3 คูณ 0-255 $renderer->setBackgroundColor([0, 0, 255]); // กำหนดพื้นหลังเป็นสีฟ้า ค่าเริ่มต้นเป็นแบบโปร่งใส ให้ค่าสีแดง เขียว และน้ำเงินเป็น 3 คูณ 0-255 $renderer->render($บาร์โค้ด);
คุณสามารถใส่ HTML ที่แสดงผลไว้ใน div ได้ดังนี้:
<div style="width: 400px; height: 75px"><?php echo $renderedBarcode; ?></div>
รองรับบาร์โค้ดประเภทนี้ ทุกประเภทรองรับชุดอักขระที่แตกต่างกัน และบางประเภทก็มีความยาวบังคับ โปรดดูวิกิพีเดียสำหรับตัวอักษรและความยาวต่อประเภทที่รองรับ
คุณสามารถค้นหาประเภทที่รองรับทั้งหมดในโฟลเดอร์ src/Types
ประเภทที่ใช้มากที่สุดคือ TYPE_CODE_128 และ TYPE_CODE_39 เนื่องจากการรองรับเครื่องสแกนที่ดีที่สุด ความยาวที่เปลี่ยนแปลงได้ และตัวอักษรส่วนใหญ่ที่รองรับ
TYPE_CODE_32 (รหัสยาภาษาอิตาลี 'MINSAN')
TYPE_CODE_39
TYPE_CODE_39_ตรวจสอบ
TYPE_CODE_39E
TYPE_CODE_39E_ตรวจสอบ
TYPE_CODE_93
TYPE_STANDARD_2_5
TYPE_STANDARD_2_5_ตรวจสอบ
TYPE_INTERLEAVED_2_5
TYPE_INTERLEAVED_2_5_ตรวจสอบ
TYPE_CODE_128
TYPE_CODE_128_A
TYPE_CODE_128_B
TYPE_CODE_128_C
TYPE_EAN_2
TYPE_EAN_5
TYPE_EAN_8
TYPE_EAN_13
TYPE_ITF14 (หรือที่เรียกว่า GTIN-14)
TYPE_UPC_A
TYPE_UPC_E
ประเภท_MSI
TYPE_MSI_CHECKSUM
TYPE_POSTNET
TYPE_แพลนเน็ต
TYPE_RMS4CC
TYPE_KIX
TYPE_IMB
TYPE_CODABAR
TYPE_CODE_11
TYPE_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
ดูรูปภาพตัวอย่างสำหรับบาร์โค้ดที่รองรับทุกประเภท
หากคุณต้องการใช้รูปภาพ PNG หรือ JPG คุณต้องติดตั้ง Imagick หรือไลบรารี GD แพ็คเกจนี้จะใช้ Imagick หากติดตั้งไว้ หรือถอยกลับไปเป็น GD หากคุณติดตั้งทั้งสองอย่างแล้ว แต่ต้องการวิธีการเฉพาะ คุณสามารถใช้ $renderer->useGd()
หรือ $renderer->useImagick()
เพื่อบังคับการตั้งค่าของคุณ
$barcode = (PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = ใหม่ PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png;base64,' . base64_encode($renderer->render ($บาร์โค้ด, $barcode->getWidth() * 2)) '">';
$barcode = (PicqerBarcodeTypesTypeCodabar())->getBarcode('081231723897');$renderer = ใหม่ PicqerBarcodeRenderersJpgRenderer();file_put_contents('barcode.jpg', $renderer->render($barcode, $barcode->getWidth() * 2));
file_put_contents('barcode.svg', (PicqerBarcodeRenderersSvgRenderer())->render((PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
ไม่จำเป็นต้องเปลี่ยนแปลงอะไรเมื่ออัปเกรดจาก v2 เป็น v3 ข้างต้น คุณจะพบวิธีใหม่ที่ต้องการในการใช้ไลบรารีนี้ตั้งแต่เวอร์ชัน 3 แต่แบบเก่ายังใช้งานได้อยู่
เพื่อให้ตัวเรนเดอร์มีอินเทอร์เฟซเดียวกัน ตอนนี้การตั้งค่าสีจะใช้อาร์เรย์สี RGB เสมอ หากคุณใช้คลาส BarcodeGenerator* แบบเก่า และใช้สีที่มีชื่อ ('สีแดง') หรือรหัสฐานสิบหก (#3399ef) สิ่งเหล่านี้จะถูกแปลงโดยใช้ ColorHelper รองรับรหัสฐานสิบหกทั้งหมด แต่สำหรับชื่อสีรองรับเฉพาะสีพื้นฐานเท่านั้น
หากคุณต้องการแปลงเป็นรูปแบบใหม่ นี่คือตัวอย่าง:
// รูปแบบเก่า$generator = PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// รูปแบบใหม่$barcode = (PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897' ใหม่ );$renderer = ใหม่ PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($บาร์โค้ด);
ความกว้างในตัวแสดงภาพตอนนี้เป็นความกว้างของผลลัพธ์สุดท้าย แทนที่จะเป็น widthFactor หากคุณต้องการคงความกว้างแบบไดนามิก คุณสามารถรับความกว้างของบาร์โค้ดที่เข้ารหัสแล้วคูณด้วย widthFactor เพื่อให้ได้ผลลัพธ์เหมือนเดิม ดูตัวอย่างสำหรับ widthFactor ของ 2 ที่นี่:
// รูปแบบเก่า$generator = ใหม่ PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2. 30);// รูปแบบใหม่$barcode = (ใหม่ PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = ใหม่ PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode, $barcode->getWidth() * 2, 30);
ในเวอร์ชัน 3 ตัวเข้ารหัสประเภทบาร์โค้ดและเครื่องเรนเดอร์รูปภาพจะแยกจากกันโดยสิ้นเชิง สิ่งนี้ทำให้การสร้างโหมดเรนเดอร์ของคุณเองง่ายขึ้น วิธีเก่าคือการใช้ "เครื่องกำเนิดไฟฟ้า" ด้านล่างนี้เป็นตัวอย่างเก่าของเครื่องกำเนิดไฟฟ้าเหล่านี้ ซึ่งยังคงใช้งานได้ในเวอร์ชัน 3 เช่นกัน
เริ่มต้นตัวสร้างบาร์โค้ดสำหรับเอาต์พุตที่คุณต้องการ จากนั้นเรียกใช้รูทีน ->getBarcode() หลาย ๆ ครั้งตามที่คุณต้องการ
<?phprequire 'vendor/autoload.php';// สิ่งนี้จะส่งออกบาร์โค้ดเป็นเอาต์พุต HTML เพื่อแสดงในเบราว์เซอร์$generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128 );
จะส่งผลให้เกิดความงามนี้:
เมธอด getBarcode()
ยอมรับพารามิเตอร์ต่อไปนี้:
$barcode
String ที่จำเป็นในการเข้ารหัสในบาร์โค้ด
$type
ประเภทของบาร์โค้ด ใช้ค่าคงที่ที่กำหนดไว้ในชั้นเรียน
$widthFactor
ความกว้างขึ้นอยู่กับความยาวของข้อมูล ด้วยปัจจัยนี้ คุณสามารถทำให้แถบบาร์โค้ดกว้างกว่าค่าเริ่มต้นได้
$height
ความสูงรวมของบาร์โค้ด หน่วยเป็นพิกเซล
$foregroundColor
รหัส Hex เป็นสตริงหรืออาร์เรย์ของ RGB ของสีของแถบ (สีพื้นหน้า)
ตัวอย่างการใช้งานพารามิเตอร์ทั้งหมด:
<?phprequire 'vendor/autoload.php';$redColor = [255, 0, 0];$generator = new PicqerBarcodeBarcodeGeneratorPNG();file_put_contents('barcode.png', $generator->getBarcode('081231723897', $generator ::TYPE_CODE_128, 3, 50, $redColor));
$generatorSVG = PicqerBarcodeBarcodeGeneratorSVG(); ใหม่ // เวกเตอร์ที่ใช้ SVG$generatorPNG = ใหม่ PicqerBarcodeBarcodeGeneratorPNG(); // PNG$generatorJPG ที่ใช้พิกเซล = PicqerBarcodeBarcodeGeneratorJPG(); // พิกเซลตาม JPG$generatorHTML = ใหม่ PicqerBarcodeBarcodeGeneratorHTML(); // Pixel based HTML$generatorHTML = new PicqerBarcodeBarcodeGeneratorDynamicHTML(); // HTML แบบเวกเตอร์
$generator = new PicqerBarcodeBarcodeGeneratorPNG();echo '<img src="data:image/png;base64,' . base64_encode($generator->getBarcode('081231723897', $generator::TYPE_CODE_128)) . '">';
$generator = ใหม่ PicqerBarcodeBarcodeGeneratorJPG();file_put_contents('barcode.jpg', $generator->getBarcode('081231723897', $generator::TYPE_CODABAR));
file_put_contents('barcode.svg', (PicqerBarcodeBarcodeGeneratorSVG())->getBarcode('6825ME601', PicqerBarcodeBarcodeGeneratorSVG::TYPE_KIX));
ฐานรหัสจะขึ้นอยู่กับเครื่องกำเนิดบาร์โค้ด TCPDF โดย Nicola Asuni รหัสนี้จึงได้รับอนุญาตภายใต้ LGPLv3