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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
在普通HTTP上安全地传输密码
Jul 21 PHP
php文章内容分页并生成相应的htm静态页面代码
Jun 07 PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
PHP base64编码后解码乱码的解决办法
Jun 19 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 PHP
PHP解决高并发问题
Apr 01 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和ACCESS写聊天室(四)
2006/10/09 PHP
常用的php对象类型判断
2008/08/27 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
一分钟理解js闭包
2016/05/04 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
Python字符编码判断方法分析
2016/07/01 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
库房主管岗位职责
2013/12/31 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
对照检查剖析材料
2014/09/30 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
公司董事任命书
2015/09/21 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
七年级作文之秋游
2019/10/21 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python