php文本转图片自动换行的方法

 更新时间:2013年03月13日 10:00:36   作者:   我要评论
通过判断字符串和截取字符串再拼接起来实现文本图片自动换行,以下贴出此代码

今天无意中浏览网面的时候发现一个长微博,它可以将文本转成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); // 自动换行处理

// 若文件编码为 utf-8 请将下行的注释去掉
// $text = iconv("utf-8", "UTF-8", $text);

imagettftext($bg, 12, 0, 10, 30, $white, "simsun.ttc", $text);
imagepng($bg);
imagedestroy($bg);
?>

相关文章

  • 通过PHP修改Linux或Unix口令的方法分享

    通过PHP修改Linux或Unix口令的方法分享

    本文介绍如何使用PHP脚本修改Linux或Unix系统口令,需要的朋友可以参考下
    2012-01-01
  • PHP回调函数简单用法示例

    PHP回调函数简单用法示例

    这篇文章主要介绍了PHP回调函数简单用法,结合实例形式分析了call_user_func()与call_user_func_array()函数区别、功能及简单使用技巧,需要的朋友可以参考下
    2019-05-05
  • PHP实现的用户注册表单验证功能简单示例

    PHP实现的用户注册表单验证功能简单示例

    这篇文章主要介绍了PHP实现的用户注册表单验证功能,结合简单实例形式分析了php form表单提交、金沙国际官网查询、正则验证等相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • PHP实现动态添加XML中数据的方法

    PHP实现动态添加XML中数据的方法

    这篇文章主要介绍了PHP实现动态添加XML中数据的方法,结合实例形式分析了php操作xml格式数据类的定义及简单使用技巧,需要的朋友可以参考下
    2018-03-03
  • linux下php上传文件注意事项

    linux下php上传文件注意事项

    这篇文章主要为大家详细介绍了linux下php上传文件注意事项,希望对大家安装php有所帮助,感兴趣的朋友可以参考一下
    2016-06-06
  • 10个值得深思的PHP面试题

    10个值得深思的PHP面试题

    这篇文章主要为大家分享了值得深入思考的10个PHP面试问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 基于win2003虚拟机中apache服务器的访问

    基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • PHP实现的构造sql语句类实例

    PHP实现的构造sql语句类实例

    这篇文章主要介绍了PHP实现的构造sql语句类,结合实例形式分析了PHP针对常用SQL语句的动态构造与生成技巧,需要的朋友可以参考下
    2016-02-02
  • 浅谈PHP封装CURL

    浅谈PHP封装CURL

    这篇文章主要介绍了PHP如何封装CURL,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • PHP FileSystem 文件系统常用api整理总结

    PHP FileSystem 文件系统常用api整理总结

    这篇文章主要介绍了PHP FileSystem 文件系统常用api,结合实例形式整理总结了php文件系统常用函数的功能、使用技巧与相关操作注意事项,需要的朋友可以参考下
    2019-07-07

最新评论