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);
}
}