ThinkPHP用barcode制作条形码

有个项目用做了扫描枪用的条形码生成,参照了老杨的代码,并在其基础上修改了部分内容

参照的原文是https://www.kancloud.cn/yangweijie/yang_book/85857

官网是http://www.barcodephp.com


下载的版本

下载了最新版。

然后我们把这种第三方库放入vendor里去


文件存放的路径

注意不同的码类型使用对应不同的class。

效果


效果


php代码

具体的可复制代码:

$savePath = 'Public/barcode/';

if(!file_exists($savePath)){

    mkdir($savePath,0755,true);

}

$class_dir = VENDOR_PATH.'barcodegen/class/';

require($class_dir.'BCGFont.php');

require($class_dir.'BCGColor.php');

require($class_dir.'BCGDrawing.php');

// Including the barcode technology

include($class_dir.'BCGcode39.barcode.php');

// Loading Font

$font = new \BCGFont($class_dir.'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);

$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 (or 0)

$code->parse(I('text', '123456')); // Text

/* Here is the list of the arguments

1 - Filename (empty : display on screen)

2 - Background color */

$drawing = new \BCGDrawing('', $color_white);//如果保存图片到本地的话,则用$drawing = new \BCGDrawing('Public/barcode/barcode.png', $color_white);

$drawing->setBarcode($code);

$drawing->draw();

// 页眉表示它是一个图像(如果您将条形码保存到文件中,则将其删除)

header('Content-Type: image/png');

header('Content-Disposition: inline; filename="Public/barcode/barcode.png"');

// 绘制(或保存)图像到PNG格式。

$drawing->finish(\BCGDrawing::IMG_FORMAT_PNG);

其实就是改了原来的示列。

值得注意的是对于第三方类库的引用。

我们有几种加载第三方类库的方式:命名空间、import、vendor、

原生include和require

命名空间适合于独立类,或者说这个类的构造方法处理其他文件的加载。常见的如ThinkPHP/Libary/Think下的所有类 如Upload、Page。

import适合默认类名符合tp类的规范即后缀是.class.php。import时系统会自动识别导入类库文件的位置,ThinkPHP可以自动识别的类库包包括Think、Org、Com、Behavior和Vendor包,以及Library目录下面的子目录 当然支持自定义位置和.php后缀,就是使用比较麻烦。

vendor 如果你的第三方类库都放在Vendor目录下面,并且都以.php为类文件后缀,也没用采用命名空间的话,那么可以使用系统内置的Vendor函数简化导入。

原生require 或include 这里注意 路径字符串中的 './'不是当前文件位置而是框架入口。为了防止出错,我们也可以借用系统路径常量 如APP_PATH、VENDOR_PATH 来拼接。

载入一个类,如果报错了。怎么调试?我们可以通过将路径拼接到一个变量里。然后用is_file去判断:

如上面代码里的:// dump(is_file(VENDOR_PATH.'barcodegen/html/header.php'));

其实文件路径问题其实就是这么简单。

还有一个注意点,有的时候相对路径可能会报错,我们需要将其用realpath转换成全路径去对比。还有windows下路径中文要转gbk编码的问题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 7,693评论 0赞 17
  • Correctness AdapterViewChildren Summary: AdapterViews can...
    MarcusMa阅读 9,153评论 0赞 6
  • 一个朋友刚刚开始经营一家书吧,常在我面前夸赞她们的书吧很好,经营的很多都是我喜欢的东西,我也相信她一定很用心...
    卿卿西风客阅读 335评论 0赞 0
  • Because I love you, So I often want to apologize to you. ...
    IntangibleJN阅读 772评论 0赞 0
  • 你和我说世界好大 要花费多少运气才能相遇 我和你说世界其实不大 兜转就在转角邂逅了你 你说感情 守护其实很难 会遇...
    萧北笙烟阅读 319评论 2赞 5

友情链接更多精彩内容