• 欢迎访问小杰博客网站
  • 欢迎访问小杰博客网站哦

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

程序 小杰 5年前 (2018-01-16) 2084次浏览 已收录 0个评论

今天无意中浏览网面的时候发现一个长微博,它可以将文本转成png图片,于是乎就研究一下PHP文本转图片的方式,其实只要是用到了PHP的扩展库,GD库来生成图片,再通过图像函数生成,代码写出来后,发现如果文字太多了,图片就会超过屏幕的宽度,导致浏览器右拉条的出现,于是,想想有没有什么办法可以使图片能够自动换行,通过GG,发现了一篇文章,通过判断字符串和截取字符串再拼接起来实现文本图片自动换行,以下贴出此代码,以学习之中:

  1. <?php
  2. header (“Content-type: image/png”);
  3. mb_internal_encoding(“UTF-8”); // 设置编码
  4. function autowrap($fontsize$angle$fontface$string$width) {
  5. // 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
  6.  $content = “”;
  7.  // 将字符串拆分成一个个单字 保存到数组 letter 中
  8.  for ($i=0;$i<mb_strlen($string);$i++) {
  9.   $letter[] = mb_substr($string$i, 1);
  10.  }
  11.  foreach ($letter as $l) {
  12.   $teststr = $content.” “.$l;
  13.   $testbox = imagettfbbox($fontsize$angle$fontface$teststr);
  14.   // 判断拼接后的字符串是否超过预设的宽度
  15.   if (($testbox[2] > $width) && ($content !== “”)) {
  16.    $content .= “\n”;
  17.   }
  18.   $content .= $l;
  19.  }
  20.  return $content;
  21. }
  22. $bg = imagecreatetruecolor(300, 290); // 创建画布
  23. $white = imagecolorallocate($bg, 255, 255, 255); // 创建白色
  24. $text = “前段时间练习使用 PHP 的 GD 库时,为了文本的自动换行纠结了很久。虽然可以通过插入 \n 实现换行,但考虑到文本中既有中文又有英文,强制限定每多少个文字就换行的效果很差。后来终于找到了一个英文下的自动换行的方法,其大概原理是将空格作为分隔符,将字符串分割为一个个单词,然后再一个接一个地拼接在一起,判断其长度是否超过画布,若超过则换行再拼接,否则继续拼接。考虑到中文需要将每个文字都拆开,所以我进行了一点修改,完整代码如下。”;
  25. $text = autowrap(12, 0, “simsun.ttc”$text, 280); // 自动换行处理
  26. // 若文件编码为 GB2312 请将下行的注释去掉
  27. // $text = iconv(“GB2312”, “UTF-8”, $text);
  28. imagettftext($bg, 12, 0, 10, 30, $white“simsun.ttc”$text);
  29. imagepng($bg);
  30. imagedestroy($bg);
  31. ?>

小杰博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php文本转图片自动换行的方法
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址