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&amp;java(三)
Oct 09 PHP
用PHP中的 == 运算符进行字符串比较
Nov 26 PHP
php socket方式提交的post详解
Jul 19 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
laravel中的一些简单实用功能
Nov 03 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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
Array of country list in PHP with Zend Framework
2011/10/17 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
使用python实现飞机大战游戏
2020/03/23 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
市场营销专业毕业生自荐信
2013/11/02 职场文书
监督检查工作方案
2014/05/28 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
干部个人对照检查材料
2014/08/25 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
员工工作及收入证明
2014/10/28 职场文书
老公婚前保证书
2015/02/28 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python