php文本转图片自动换行的方法
2013-03-13 00:00
344 查看
今天无意中浏览网面的时候发现一个长微博,它可以将文本转成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文本转图片自动换行功能
- PHP实现自动对图片进行滚动显示的方法
- php上传图片自动生成缩略图方法函数
- PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
- html 图片超出父容器,文字超出边界需要自动换行处理方法
- PHP 根据文字内容添加图片上实现自动换行的小程序
- easyui在jsp页面的td文本过长时无法自动换行的解决方法
- PHP 存储文本换行实现方法
- 文本每行都应该换行——vi文件末尾自动换行,不会导致php输出空行
- C# WinForm 中控件(Label,Button等) 文本自动换行 解决方法
- PHP实现图片自动清理的方法
- 页面定制CSS代码初探(一):页面变宽 文本自动换行 图片按比缩放
- [cnblogs镜像]页面定制CSS代码初探(一):页面变宽 文本自动换行 图片按比缩放
- 使纯文本自动转换为Web网页的方法(用php实现)
- PHP 存储文本换行实现方法
- C# WinForm 中控件(Label,Button等) 文本自动换行 解决方法
- 将文本写在图片上,自定义字体,自动换行,自定义行间距
- PHP实现图片自动清理的方法
- C# WinForm 中控件(Label,Button等) 文本自动换行 解决方法