php 生成文字png图片的代码


Posted in PHP onApril 17, 2011
<? 
/* 
php生成文字png图片,可以使用如下方式调用函数: 
http://www.yourdomian.com/text_png.php3?msg=helloworld+class&rot=15&size=48&font=fonts/ARIAL.TTF 
*/ 
Header("Content-type: image/png"); 
class textPNG { 
var $font = 'fonts/TIMES.TTF'; //默认字体. 相对于脚本存放目录的相对路径. 
var $msg = "undefined"; // 默认文字. 
var $size = 24; 
var $rot = 0; // 旋转角度. 
var $pad = 0; // 填充. 
var $transparent = 1; // 文字透明度. 
var $red = 0; // 在黑色背景中... 
var $grn = 0; 
var $blu = 0; 
var $bg_red = 255; // 将文字设置为白色. 
var $bg_grn = 255; 
var $bg_blu = 255; 
function draw() { 
$width = 0; 
$height = 0; 
$offset_x = 0; 
$offset_y = 0; 
$bounds = array(); 
$image = ""; 
// 确定文字高度. 
$bounds = ImageTTFBBox($this->size, $this->rot, $this->font, "W"); 
if ($this->rot < 0) { 
$font_height = abs($bounds[7]-$bounds[1]); 
} else if ($this->rot > 0) { 
$font_height = abs($bounds[1]-$bounds[7]); 
} else { 
$font_height = abs($bounds[7]-$bounds[1]); 
} 
// 确定边框高度. 
$bounds = ImageTTFBBox($this->size, $this->rot, $this->font, $this->msg); 
if ($this->rot < 0) { 
$width = abs($bounds[4]-$bounds[0]); 
$height = abs($bounds[3]-$bounds[7]); 
$offset_y = $font_height; 
$offset_x = 0; 
} else if ($this->rot > 0) { 
$width = abs($bounds[2]-$bounds[6]); 
$height = abs($bounds[1]-$bounds[5]); 
$offset_y = abs($bounds[7]-$bounds[5])+$font_height; 
$offset_x = abs($bounds[0]-$bounds[6]); 
} else { 
$width = abs($bounds[4]-$bounds[6]); 
$height = abs($bounds[7]-$bounds[1]); 
$offset_y = $font_height;; 
$offset_x = 0; 
} 
$image = imagecreate($width+($this->pad*2)+1,$height+($this->pad*2)+1); 
$background = ImageColorAllocate($image, $this->bg_red, $this->bg_grn, $this->bg_blu); 
$foreground = ImageColorAllocate($image, $this->red, $this->grn, $this->blu); 
if ($this->transparent) ImageColorTransparent($image, $background); 
ImageInterlace($image, false); 
// 画图. 
ImageTTFText($image, $this->size, $this->rot, $offset_x+$this->pad, $offset_y+$this->pad, $foreground, $this->font, $this->msg); 
// 输出为png格式. 
imagePNG($image); 
} 
} 
$text = new textPNG; 
if (isset($msg)) $text->msg = $msg; // 需要显示的文字 
if (isset($font)) $text->font = $font; // 字体 
if (isset($size)) $text->size = $size; // 文字大小 
if (isset($rot)) $text->rot = $rot; // 旋转角度 
if (isset($pad)) $text->pad = $pad; // padding 
if (isset($red)) $text->red = $red; // 文字颜色 
if (isset($grn)) $text->grn = $grn; // .. 
if (isset($blu)) $text->blu = $blu; // .. 
if (isset($bg_red)) $text->bg_red = $bg_red; // 背景颜色. 
if (isset($bg_grn)) $text->bg_grn = $bg_grn; // .. 
if (isset($bg_blu)) $text->bg_blu = $bg_blu; // .. 
if (isset($tr)) $text->transparent = $tr; // 透明度 (boolean). 
$text->draw(); 
?>
PHP 相关文章推荐
PHP DataGrid 实现代码
Aug 12 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
Symfony核心类概述
Mar 17 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 #PHP
php编写一个简单的路由类
Apr 13 #PHP
php 求质素(素数) 的实现代码
Apr 12 #PHP
php 5.3.5安装memcache注意事项小结
Apr 12 #PHP
php处理json时中文问题的解决方法
Apr 12 #PHP
php 面向对象的一个例子
Apr 12 #PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 #PHP
You might like
php cli配置文件问题分析
2015/10/15 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python中的set实现不重复的排序原理
2018/01/24 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
化工工艺专业求职信
2013/09/22 职场文书
造型师求职自荐信
2013/09/27 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
物业消防安全责任书
2014/07/23 职场文书
实习协议书
2015/01/27 职场文书
大专护理专业自荐信
2015/03/25 职场文书
教师考核鉴定意见
2015/06/05 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL