php 限定区域自动调整字体大小的类

前端之家收集整理的这篇文章主要介绍了php 限定区域自动调整字体大小的类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP在限定的区域里自动调整字体大小的PHP类 imagefittext.class.PHP感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!
  1. <?PHP
  2. /**
  3. * PHP在限定的区域里自动调整字体大小的PHP类 imagefittext.class.PHP
  4. *
  5. * @param
  6. * @author 编程之家 jb51.cc jb51.cc
  7. **/
  8. // Image Fit Text Class 0.1 by ming0070913
  9. CLASS ImageFitText{
  10. public $font,$fontsize,$width,$height;
  11. public $step_wrap,$step_fontsize;
  12. public function __construct($font,$step_wrap=1,$step_fontsize=1){
  13. $this->font = $font;
  14. $this->step_wrap = $step_wrap>1?$step_wrap:1;
  15. $this->step_fontsize = $step_fontsize>1?$step_fontsize:1;
  16. }
  17. function fit($width,$height,$text,$min_fontsize=5,$min_wraplength=0){
  18. $this->fontsize = & $fontsize;
  19. $text_ = $text;
  20. while($this->TextHeight($text_)>$height && $fontsize>$min_fontsize)
  21. $fontsize -= $this->step_fontsize;
  22. while(($this->TextWidth($text_)>$width || $this->TextHeight($text_)>$height) && $fontsize>$min_fontsize){
  23. $fontsize -= $this->step_fontsize;
  24. $wraplength = $this->maxLen($text);
  25. $text_ = $text;
  26. while($this->TextWidth($text_)>$width && $wraplength>=$min_wraplength+$this->step_wrap){
  27. $wraplength -= $this->step_wrap;
  28. $text_ = wordwrap($text,$wraplength,"\n",true);
  29. //To speed up:
  30. if($this->TextHeight($text_)>$height) break;
  31. if($wraplength<=$min_wraplength) break;
  32. $wraplength_ = $wraplength;
  33. $wraplength = ceil($wraplength/($this->TextWidth($text_)/$width));
  34. $wraplength = $wraplength<($min_wraplength+$this->step_wrap)?($min_wraplength+$this->step_wrap):$wraplength;
  35. }
  36. }
  37. $this->width = $this->TextWidth($text_);
  38. $this->height = $this->TextHeight($text_);
  39. return array("fontsize"=>$fontsize,"text"=>$text_,"width"=>$this->width,"height"=>$this->height);
  40. }
  41. function maxLen($text){
  42. $lines = explode("\n",str_replace("\r","",$text));
  43. foreach($lines as $line)
  44. $t[] = strlen($line);
  45. return max($t);
  46. }
  47. function TextWidth($text){
  48. $t = imagettfbBox($this->fontsize,$this->font,$text);
  49. return $t[2]-$t[0];
  50. }
  51. function TextHeight($text){
  52. $t = imagettfbBox($this->fontsize,$text);
  53. return $t[1]-$t[7];
  54. }
  55. }
  56. /*** 来自编程之家 jb51.cc(jb51.cc) ***/

猜你在找的PHP相关文章