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 相关文章推荐
smarty的保留变量问题
Oct 23 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
PHP图片加水印实现方法
May 06 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
php常用数组函数实例小结
Dec 29 PHP
php可变长参数处理函数详解
Feb 22 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
php 使用 __call实现重载功能示例
Nov 18 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 curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
Python中的类与类型示例详解
2019/07/10 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python yield的用法实例分析
2020/03/06 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
物流仓管员工作职责
2014/01/06 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
服务理念口号
2014/06/11 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
师德师风个人整改措施
2014/10/27 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
音乐剧猫观后感
2015/06/04 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏