发布于 4年前

php生成条形码: barcode 怎么返回base64格式图片数据

主要用到 ob_start()ob_end_clean(),完整代码如下

<?php
namespace barcode;
// Including all required classes
require_once('class/BCGFontFile.php');
require_once('class/BCGColor.php');
require_once('class/BCGDrawing.php');

// Including the barcode technology
require_once('class/BCGcode39.barcode.php');

use BCGFontFile;
use BCGColor;
use BCGcode39;
use BCGDrawing;

Class Build {

    function barcode_string($text)  {
        // Loading Font
       $font = new BCGFontFile(pathinfo(__FILE__)['dirname'].'/font/Arial.ttf', 18);

        // The arguments are R, G, B for color.
        $color_black = new BCGColor(0, 0, 0);
        $color_white = new BCGColor(255, 255, 255);

        $drawException = null;
        try {
            $code = new BCGcode39();
            $code->setScale(2); // Resolution
            $code->setThickness(30); // Thickness
            $code->setForegroundColor($color_black); // Color of bars
            $code->setBackgroundColor($color_white); // Color of spaces
            $code->setFont($font); // $font 显示数字 ,0 不显示数字
            $code->parse($text); // Text
        } catch(Exception $exception) {
            $drawException = $exception;
        }

        /* Here is the list of the arguments
        1 - Filename (empty : display on screen)
        2 - Background color */
        $drawing = new BCGDrawing('', $color_white);
        if($drawException) {
            $drawing->drawException($drawException);
        } else {
            $drawing->setBarcode($code);
            $drawing->draw();
        }

        // Header that says it is an image (remove it if you save the barcode to a file)
        header('Content-Type: image/png');
        header('Content-Disposition: inline; filename="barcode.png"');

        ob_start();
        $drawing->finish(BCGDrawing::IMG_FORMAT_PNG);
        $imageString = base64_encode(ob_get_contents());
        ob_end_clean();
        return "data:image/jpg;base64,".$imageString;

    }
}

引用示例:

use barcode\Build;

class Example{
    function Barcode() {
        $number  = '1234567890';

        $barcode = new Build();
        return $barcode->barcode_string($number);
    }
} 
©2020 edoou.com   京ICP备16001874号-3