最近在 Thinkphp5.x 项目中遇到需要生成 条形码 / 二维码,网上找了些资料和方法,在此做一下汇总
一、生成 二维码
1、下载并整合QrCode工具包
composer require endroid/qrcode
2、 在控制器中引入QrCode类
<?php
/**
* 我的控制器
*/
namespace app\miniapps\controller;
use think\Controller;
use Endroid\QrCode\QrCode;//引入类
3、然后 这个类库要改一下 在路径:项目路径/vendor/endroid/qrcode/src/QrCode.php 改成
const LABEL_FONT_PATH_DEFAULT = '';
4、在控制器中调用
//调用显示用户礼物二维码
public function qrcode()
{
$name = ‘二维码’;//二维码下方显示文字
$tel = '15123456789';//二维码附带信息
$qrCode=new QrCode();
$url = 'https://fai.com/details?tel='.$tel;//加http://这样扫码可以直接跳转url
$qrCode->setText($url)
->setSize(100)//大小
->setLabelFontPath(VENDOR_PATH.'endroid\qrcode\assets\noto_sans.otf')
->setErrorCorrectionLevel('high')
->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
->setLabel("$name")
->setLabelFontSize(10);
header('Content-Type: '.$qrCode->getContentType());
echo $qrCode->writeString();
exit;
}
5、在需要展示的地方直接访问该方法,就可以显示二维码了
二、生成条形码
类文件是放在 扩展目录extend之下的(解压后直接将整个文件夹放入extend扩展目录)
1、 条形码工具包下载 BCode.tar
<?php
namespace app\miniapps\controller;
use think\Controller;
use think\Db;
use Endroid\QrCode\QrCode;
use think\Loader;
class Myclass extends controller
{
public function barcode(){
$content='123456'; //为条形码内容信息
// 引用barcode文件夹对应的类
Loader::import('BCode.BCGFontFile',EXTEND_PATH);
//Loader::import('BCode.BCGColor',EXTEND_PATH);
Loader::import('BCode.BCGDrawing',EXTEND_PATH);
// 条形码的编码格式
Loader::import('BCode.BCGcode39',EXTEND_PATH,'.barcode.php');
// $code = '';
// 加载字体大小
//$font = new BCGFontFile('./class/font/Arial.ttf', 18);
//颜色条形码
$color_black = new \BCGColor(0, 0, 0);
$color_white = new \BCGColor(255, 255, 255);
$drawException = null;
try
{
$code = new \BCGcode39();
$code->setScale(2);
$code->setThickness(30); // 条形码的厚度
$code->setForegroundColor($color_black); // 条形码颜色
$code->setBackgroundColor($color_white); // 空白间隙颜色
// $code->setFont($font); //
$code->parse($content); // 条形码需要的数据内容
}
catch(\Exception $exception)
{
$drawException = $exception;
}
//根据以上条件绘制条形码
$drawing = new \BCGDrawing('', $color_white);
if($drawException) {
$drawing->drawException($drawException);
}else{
$drawing->setBarcode($code);
$drawing->draw();
}
// 生成PNG格式的图片
header('Content-Type: image/png');
// header('Content-Disposition:attachment; filename="barcode.png"'); //自动下载
$drawing->finish(\BCGDrawing::IMG_FORMAT_PNG);//若直接输出到浏览器,需要加 die;
}
}
2、页面中的资源路径直接问该方法即可
<img src='http://fangxinsai.com/index/myclass/barcode' />
3、完成以上就实现了条形码生成
附文:扫码枪扫条形码,传入WEB 表单页面
觉得有用的可以点一下喜欢哦
网友评论