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 图片加水印与上传图片加水印php类
May 12 PHP
基于php常用正则表达式的整理汇总
Jun 08 PHP
深入PHP数据加密详解
Jun 18 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
Sep 27 PHP
php不使用copy()函数复制文件的方法
Mar 13 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
php动态绑定变量的用法
Jun 16 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 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编码规范-php coding standard
2007/03/16 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
php文件缓存方法总结
2016/03/16 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
jquery得到font-size属性值实现代码
2013/09/30 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
JS实现图片切换效果
2018/11/17 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
python编写实现抽奖器
2020/09/10 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
中学生学习生活的自我评价
2013/10/26 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
会计专业自我评价
2014/02/12 职场文书
《自选商场》教学反思
2014/02/14 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
汽车转让协议书范本
2014/12/07 职场文书
特此通知格式
2015/04/27 职场文书
二手房购房意向书
2015/05/09 职场文书
Hive导入csv文件示例
2022/06/25 数据库