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 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
PHP入门
Oct 09 PHP
UCenter Home二次开发指南
May 28 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
PHP中设置时区,记录日志文件的实现代码
Jan 07 PHP
PHP中判断变量为空的几种方法小结
Nov 12 PHP
PHP获取MySql新增记录ID值的3种方法
Jun 24 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
php下载文件超时时间的设置方法
Oct 06 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
激活 ActiveX 控件
2006/10/09 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python 文件操作实现代码
2009/10/07 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
酒店办公室文员岗位职责
2013/12/18 职场文书
对祖国的寄语大全
2014/04/11 职场文书
幼儿园安全责任书
2014/04/14 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python