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程序员编程注意事项
Apr 10 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
php中创建和调用webservice接口示例
Jul 25 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
Yii2使用swiftmailer发送邮件的方法
May 03 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
Jul 31 PHP
laravel实现于语言包的完美切换方法
Sep 29 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
在Windows版的PHP中使用ADO
2006/10/09 PHP
详解php命令注入攻击
2019/04/06 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
13个PHP函数超实用
2015/10/21 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
写好求职信第一句话的技巧
2013/10/26 职场文书
关于抽烟的检讨书
2014/02/25 职场文书
社区工作者演讲稿
2014/05/23 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
退休教师追悼词
2015/06/23 职场文书