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 相关文章推荐
用来解析.htgroup文件的PHP类
Sep 05 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
php实现在服务器端调整图片大小的方法
Jun 16 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
php发送http请求的常用方法分析
Nov 08 PHP
PHP 计算两个特别大的整数实例代码
May 07 PHP
yii2 上传图片的示例代码
Nov 02 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 PHP
php中字符串和整数比较的操作方法
Jun 06 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下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
js倒计时抢购实例
2015/12/20 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
js实现文字列表无缝滚动效果
2017/06/23 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
2015年元旦文艺汇演主持词
2014/03/26 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
发布会邀请函
2015/01/31 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
Python利用FlashText算法实现替换字符串
2022/03/31 Python