PHP文字转图片 PHP文字生成图片Logo


使用场景很多,而且这个图片是自适应的,关于字体的话,推荐大家使用黑体或者间距小一点的字体,否则可能会产生BUG。

trans.php代码:

<?php
$text_string     = $_REQUEST["t"];
$font_ttf        = "simhei.ttf"; 
$font_size       = 14; 
$text_angle      = 0; 
$text_padding    = 0;
$the_box        = calculateTextBox($text_string, $font_ttf, $font_size, $text_angle); 
$imgWidth    = $the_box["width"] + $text_padding; 
$imgHeight    = $the_box["height"] + $text_padding; 
$image = imagecreate($imgWidth,$imgHeight); 
imagecolorallocatealpha($image,255,255,255,127); 
$color = imagecolorallocate($image,0,0,0); 
imagettftext($image, 
$font_size, 
$text_angle, 
$the_box["left"] + ($imgWidth / 2) - ($the_box["width"] / 2), 
$the_box["top"] + ($imgHeight / 2) - ($the_box["height"] / 2), 
$color, 
$font_ttf, 
$text_string); 

header("Content-Type: image/png"); 
imagepng($image); 
imagedestroy($image); 

function calculateTextBox($text,$fontFile,$fontSize,$fontAngle) { 
    $rect = imagettfbbox($fontSize,$fontAngle,$fontFile,$text); 
    $minX = min(array($rect[0],$rect[2],$rect[4],$rect[6])); 
    $maxX = max(array($rect[0],$rect[2],$rect[4],$rect[6])); 
    $minY = min(array($rect[1],$rect[3],$rect[5],$rect[7])); 
    $maxY = max(array($rect[1],$rect[3],$rect[5],$rect[7])); 
    return array( 
     "left"   => abs($minX) - 1, 
     "top"    => abs($minY) - 1, 
     "width"  => $maxX - $minX, 
     "height" => $maxY - $minY, 
     "box"    => $rect 
    ); 
} 
?>

Img代码调用:

<img src="/trans.php?t=银狐笔记" />