PHP生成条形码大揭秘


Posted in PHP onSeptember 24, 2015

1.什么是条形码?

百度百科定义:条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成平行线的图案。在日常生活中,条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件地点起止、类别、日期等许多信息。条形码编码格式具体请参考

打印出来的优惠券,商家需要用验证器读取条形码,来获得其有效性。

2.如何生成条形码?

首先找到强大的开源资料,在barcode官网下载barcodegen.1d-php5.v5.0.1.zip版本,然后解压文件放到你的Apache服务器的根目录下

2.1文件结构:

PHP生成条形码大揭秘

2.2具体解析

(1)class文件夹是已封装好生成条形码的类,只需要调用即可。

(2)index.php是一个可选择条件生成条形码的功能,是主程序的入口,而html文件夹是提供的被引用的代码,code39.php指的是指向默认的编码格式。

<?php 
header('Location: html/code39.php'); 
?>

PHP生成条形码大揭秘

(3)test.php是另外一个例子,通过代码直接生成HELLO条形码。 

PHP生成条形码大揭秘

View Code  
 
<?php 
// 引用class文件夹对应的类 
require_once('class/BCGFontFile.php'); 
require_once('class/BCGColor.php'); 
require_once('class/BCGDrawing.php'); 
 
// 条形码的编码格式 
require_once('class/BCGcode39.barcode.php'); 
 
// 加载字体大小 
$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('HELLO'); // 条形码需要的数据内容 
} 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'); 
 
 
$drawing->finish(BCGDrawing::IMG_FORMAT_PNG); 
?>

3.实际应用

对于上面有个大概的了解后,下面我们可以重新整合下代码,更加方便的使用它。

首先新建buildcode.php文件中,根据test.php文件进行改写,从请求的文件中获取数据:

1).条形码的编码格式

2).条形码需要的数据内容

View Code  
<?php 
// Including all required classes 
require_once('class/BCGFontFile.php'); 
require_once('class/BCGColor.php'); 
require_once('class/BCGDrawing.php');  
$codebar = $_REQUEST['codebar']; //条形码将要数据的内容  
// Including the barcode technology 
require_once('class/'.$codebar.'.barcode.php');  
// Loading Font 
$font = new BCGFontFile('./class/font/Arial.ttf', 12);  
// 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 $codebar();//实例化对应的编码格式 
  $code->setScale(2); // Resolution 
  $code->setThickness(23); // Thickness 
  $code->setForegroundColor($color_black); // Color of bars 
  $code->setBackgroundColor($color_white); // Color of spaces 
  $code->setFont($font); // Font (or 0) 
  $text = $_REQUEST['text']; //条形码将要数据的内容 
  $code->parse($text); 
} catch(Exception $exception) { 
  $drawException = $exception; 
}  
/* Here is the list of the arguments 
 - Filename (empty : display on screen) 
 - 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');  
// Draw (or save) the image into PNG format. 
$drawing->finish(BCGDrawing::IMG_FORMAT_PNG); 
?>

然后新建test.html文件,向buildcode.php请求数据

<!DOCTYPE html> 
<html> 
<head> 
<title>Test with embedded image</title> 
</head> 
<body> 
 <img src="buildcode.php?codebar=BCGcode39&text=abc123"/> 
</body> 
</html>

最后进行访问,浏览器直接生成png格式的条形码

PHP生成条形码大揭秘

其中codebar支持的编码格式可以由用户请求所得:

/*'BCGcodabar','BCGcode11','BCGcode39','BCGcode39extended','BCGcode93',  
'BCGcode128','BCGean8','BCGean13','BCGisbn','BCGi25','BCGs25','BCGmsi',  
'BCGupca','BCGupce','BCGupcext2','BCGupcext5','BCGpostnet','BCGothercode'*/ 

剩下的就是验证了

4.验证

我们如何验证条形码是否有效,即能否读出条形码中的内容。

先将图片保存下来,然后访问官网提供的验证功能,将图片上传就Ok了! 

PHP生成条形码大揭秘

今天和大家一起揭秘了php如何生成条形码的,希望大家可以对条形码的形成有个大概的了解,对今后的学习有所帮助。

PHP 相关文章推荐
php获取某个目录大小的代码
Sep 10 PHP
PHP 读取文件的正确方法
Apr 29 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
Zend Framework页面缓存实例
Jun 25 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
CodeIgniter记录错误日志的方法全面总结
May 17 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
php实现简易计算器
Aug 28 PHP
php商品对比功能代码分享
Sep 24 #PHP
php实现简易聊天室应用代码
Sep 23 #PHP
利用PHP如何实现Socket服务器
Sep 23 #PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 #PHP
Discuz!X中SESSION机制实例详解
Sep 23 #PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
Sep 23 #PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 #PHP
You might like
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
php 禁止页面缓存输出
2009/01/07 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
js数组操作常用方法
2014/05/08 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
python处理html转义字符的方法详解
2016/07/01 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
python使用Geany编辑器配置方法
2020/02/21 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
机电专业个人求职信范文
2013/12/30 职场文书
联欢晚会主持词
2014/03/25 职场文书
优秀员工推荐信
2014/05/10 职场文书
卫生标语大全
2014/06/21 职场文书
个人授权委托书模板
2014/09/14 职场文书
校车安全管理责任书
2015/05/11 职场文书
《角的度量》教学反思
2016/02/18 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server