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 相关文章推荐
MVC模式的PHP实现
Oct 09 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
Linux中为php配置伪静态
Dec 17 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
php中stdClass的用法分析
Feb 27 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
详解提高使用Java反射的效率方法
Apr 29 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
matplotlib绘制动画代码示例
2018/01/02 Python
Python中的asyncio代码详解
2019/06/10 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
python单例模式的多种实现方法
2019/07/26 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
高级编程求职信模板
2014/02/16 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
师德演讲稿范文
2014/05/06 职场文书
公司处罚决定书
2015/06/24 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
MySQL数据库 安全管理
2022/05/06 MySQL