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 相关文章推荐
php中的登陆login
Jan 18 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
cakephp打印sql语句的方法
Feb 13 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
php生成高清缩略图实例详解
Dec 07 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
May 21 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 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
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
python实现串口自动触发工作的示例
2019/07/02 Python
Python json转字典字符方法实例解析
2020/04/13 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
python模块内置属性概念及实例
2021/02/18 Python
历史系毕业生自荐信
2013/10/28 职场文书
生产厂长岗位职责
2014/02/21 职场文书
小学语文课后反思精选
2014/04/25 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android