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 session劫持和防范的方法
Nov 12 PHP
PHP两种快速排序算法实例
Feb 15 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
PDO::errorCode讲解
Jan 28 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
模拟flock实现文件锁定
2007/02/14 PHP
php相当简单的分页类
2008/10/02 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
解析php中const与define的应用区别
2013/06/18 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
JS 控件事件小结
2012/10/31 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
js实现轮播图特效
2020/05/28 Javascript
python中的json总结
2018/10/11 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
企划主管岗位职责
2013/12/12 职场文书
煤矿班组长岗位职责
2013/12/29 职场文书
说明书格式及范文
2014/05/07 职场文书
核心价值观演讲稿
2014/05/13 职场文书
社区创先争优承诺书
2014/08/30 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
离职信范文
2015/06/23 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript