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(视频)Http下载
Dec 12 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
php查询ip所在地的方法
Dec 05 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 PHP
PHP实现本地图片转base64格式并上传
May 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
drupal 代码实现URL重写
2011/05/04 PHP
PHP输出时间差函数代码
2013/01/28 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
Python中logging模块的用法实例
2014/09/29 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
python实现在线翻译功能
2020/03/03 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
白酒市场开发计划书
2014/01/09 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
书香家庭事迹材料
2014/05/09 职场文书
2014年外联部工作总结
2014/11/17 职场文书
同学聚会邀请函
2015/01/30 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
五年级语文教学反思
2016/03/03 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL