Heim  >  Artikel  >  Backend-Entwicklung  >  Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename

Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename

WBOY
WBOYOriginal
2016-06-13 13:22:371188Durchsuche

求助:Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename
//check we have the appropriate variable data
//variables are button-text and color

$button_text=$_REQUEST['button_text'];
$color=$_REQUEST['color'];

if((empty($button_text)||empty($color))||(!($color=='red'
  ||$color=='blue'||$color=='green')))
{
  echo 'Could not create image-form not filled out correctly';
  exit;
 }
 //create an image of the right background and check size
 $im=imagecreatefrompng($color.'-button.png');
 if(!$im)
 {
  echo 'Could not create image';
  exit;
  }
 $width_image=imagesx($im);
 $height_image=imagesy($im);
 
 //our images need an 18 pixel margin in from the edage of the image
 $width_image_wo_margins=$width_image-(2*18);
 $height_image_wo_margins=$height-(2*18);
 //work our if the font size will fit and make itsmaller until it does
 //start our with the biggest size that will reasonably fit on our buttons
 $font_size=3;
 //you need to tell GD2 where fonts reside
 putenv('GDFONTFATH=C:\windows\fonts');
 $fontname='Arial';
 
 do
 { 
  $font_size--;
  //find out the size of the text at that font size
  $bbox =imagettfbbox($font_size,0,$fontname,$button_text);
  
  $right_text=$bbox[2];//right co-ordinate
  $left_text=$bbox[0];
  $width_text=$right_text-$left_text; //how wide is it?
  $height_text=abs($bbox[7]-$bbox[1]);//how tall is it?
  }
  while($font_size>8&&($height_text>$height_image_wo_margins||
  $width_text>$width_image_wo_margins)
);
 
  if($height_text>$height_image_wo_margins||
  $width_text>$width_image_wo_margins)
  {
  //no readable font size will fit on button
  echo 'Text given will not fit on button.
';
  }
  else
  {
  //we have found a font size that will fit
//now work out where to put it
$text_x=$width_image/2.0-$width_text/2/0;
$text_y=$height_image/2.0-$height_text/2.0;

if($left_text $text_x+=abs($left_text);
$above_line_text=abs($bbox[7]);
$text_y+=$above_line_text;

$text_y-=2;
$white=imagecolorallocate($im,255,255,255);
imagettftext($im,$font_size,0,$text_x,$text_y,$white,$fontname,
$button_text);
header('content-type:image/png');
imagepng($im);
}
imagedestroy($im);
?>
 
 Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename in E:\AppServ\www\make_button.php on line 38


------解决方案--------------------
没有那个字体 换一个字体或把字体文件拷到相对应的目录
------解决方案--------------------
是字体变量的问题。把 
putenv('GDFONTFATH=C:\windows\fonts');
$fontname='Arial';

直接改成
$fontname = 'c:/windows/fonts/arial.ttf'就可以了,大小写不敏感。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel: PHP 视屏怎么添加超链接 Nächster Artikel: 在线支付如何做