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 相关文章推荐
PHP4之真OO
Oct 09 PHP
PHP开发框架总结收藏
Apr 24 PHP
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
php入门教程 精简版
Dec 13 PHP
php中++i 与 i++ 的区别
Aug 08 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
PHP对文件进行加锁、解锁实例
Jan 23 PHP
php开发工具有哪五款
Nov 09 PHP
php文件上传类完整实例
May 14 PHP
PHP截取发动短信内容的方法
Jul 04 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
php用户名的密码加密更安全的方法
Jun 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应用JSON技巧讲解
2013/02/03 PHP
php实现三级级联下拉框
2016/04/17 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
php扩展开发入门demo示例
2019/09/23 PHP
jQuery 动态酷效果实现总结
2009/12/27 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
JAVA高级程序员面试题
2013/09/06 面试题
会计核算科岗位职责
2014/03/19 职场文书
公司晚会策划方案
2014/05/17 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers