php文本转图片自动换行的方法


Posted in PHP onMarch 13, 2013

今天无意中浏览网面的时候发现一个长微博,它可以将文本转成png图片,于是乎就研究一下PHP文本转图片的方式,其实只要是用到了PHP的扩展库,GD库来生成图片,再通过图像函数生成,代码写出来后,发现如果文字太多了,图片就会超过屏幕的宽度,导致浏览器右拉条的出现,于是,想想有没有什么办法可以使图片能够自动换行,通过GG,发现了一篇文章,通过判断字符串和截取字符串再拼接起来实现文本图片自动换行,以下贴出此代码,以学习之中:

<?php
header ("Content-type: image/png");
mb_internal_encoding("UTF-8"); // 设置编码
function autowrap($fontsize, $angle, $fontface, $string, $width) {
// 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
 $content = "";
 // 将字符串拆分成一个个单字 保存到数组 letter 中
 for ($i=0;$i<mb_strlen($string);$i++) {
  $letter[] = mb_substr($string, $i, 1);
 }
 foreach ($letter as $l) {
  $teststr = $content." ".$l;
  $testbox = imagettfbbox($fontsize, $angle, $fontface, $teststr);
  // 判断拼接后的字符串是否超过预设的宽度
  if (($testbox[2] > $width) && ($content !== "")) {
   $content .= "\n";
  }
  $content .= $l;
 }
 return $content;
}
$bg = imagecreatetruecolor(300, 290); // 创建画布
$white = imagecolorallocate($bg, 255, 255, 255); // 创建白色
$text = "前段时间练习使用 PHP 的 GD 库时,为了文本的自动换行纠结了很久。虽然可以通过插入 \n 实现换行,但考虑到文本中既有中文又有英文,强制限定每多少个文字就换行的效果很差。后来终于找到了一个英文下的自动换行的方法,其大概原理是将空格作为分隔符,将字符串分割为一个个单词,然后再一个接一个地拼接在一起,判断其长度是否超过画布,若超过则换行再拼接,否则继续拼接。考虑到中文需要将每个文字都拆开,所以我进行了一点修改,完整代码如下。";
$text = autowrap(12, 0, "simsun.ttc", $text, 280); // 自动换行处理
// 若文件编码为 GB2312 请将下行的注释去掉
// $text = iconv("GB2312", "UTF-8", $text);
imagettftext($bg, 12, 0, 10, 30, $white, "simsun.ttc", $text);
imagepng($bg);
imagedestroy($bg);
?>
PHP 相关文章推荐
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
Windows 下的 PHP-PEAR 安装方法
Nov 20 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
php mysqli查询语句返回值类型实例分析
Jun 29 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
PHP实现权限管理功能示例
Sep 22 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
php 策略模式原理与应用深入理解
Sep 25 PHP
laravel中Redis队列监听中断的分析
Sep 14 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 #PHP
php 生成唯一id的几种解决方法
Mar 08 #PHP
PHP Directory 函数的详解
Mar 07 #PHP
PHP重定向的3种方式
Mar 07 #PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 #PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 #PHP
php设置编码格式的方法
Mar 05 #PHP
You might like
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
PHP实现的oracle分页函数实例
2016/01/25 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
在js中使用&quot;with&quot;语句中跨frame的变量引用问题
2007/03/08 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
python二分法实现实例
2013/11/21 Python
python连接池实现示例程序
2013/11/26 Python
python根据文件大小打log日志
2014/10/09 Python
python实现简易数码时钟
2021/02/19 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
Django中的session用法详解
2020/03/09 Python
详解python算法常用技巧与内置库
2020/10/17 Python
python中Mako库实例用法
2020/12/31 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
玩具公司的创业计划书
2013/12/31 职场文书
2014年教学工作总结
2014/11/13 职场文书
2014年妇女工作总结
2014/12/06 职场文书
神秘岛读书笔记
2015/07/01 职场文书
如何书写邀请函?
2019/06/24 职场文书