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
我的论坛源代码(二)
Oct 09 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
基于thinkPHP实现的微信自定义分享功能示例
Sep 23 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
PHP中递归的实现实例详解
Nov 14 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 PHP
在laravel中使用with实现动态添加where条件
Oct 10 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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/11/14 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
浅析php单例模式
2014/11/25 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
深入理解angular2启动项目步骤
2017/07/15 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
Java语言程序设计测试题选择题部分
2014/04/03 面试题
诚信承诺书模板
2014/05/26 职场文书
安全施工标语
2014/06/07 职场文书
工地宣传标语
2014/06/18 职场文书
公司租房协议书范本
2014/10/08 职场文书
司机个人年终总结
2015/03/03 职场文书
自主招生自荐信范文
2015/03/04 职场文书