PHP imagettftext 图像GD库函数

  • 定义和用法

    imagettftext - 用 TrueType 字体向图像写入文本
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
    V5.2.0 - 现在可以在文本中指定一个十六进制实体。
  • 语法

    imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
    
    imagettftext() 使用 TrueType 字体将 指定的 text 写入图像。
  • 参数

    参数 必需的 描述
    image 由图象创建函数(例如 imagecreatetruecolor() )返回的图象资源。
    size 字体的尺寸。根据 GD 的版本,为像素尺寸(GD1)或点(磅)尺寸(GD2)。
    angle 角度制表示的角度,0 度为从左向右读的文本。更高数值表示逆时针旋转。例如 90 度表示从下向上读的文本。
    x 由 x,y 所表示的坐标定义了第一个字符的基本点(大概是字符的左下角)。这和 imagestring() 不同,其 x,y 定义了第一个字符的左上角。例如 "top left" 为 0, 0。
    y Y 坐标。它设定了字体基线的位置,不是字符的最底端。
    color 颜色索引。使用负的颜色索引值具有关闭防锯齿的效果。见 imagecolorallocate()
    fontfile 是想要使用的 TrueType 字体的路径。根据 PHP 所使用的 GD 库的不同,当 fontfile 没有以 / 开头时则 .ttf 将被加到文件名之后并且会在库定义字体路径中尝试搜索该文件名。当使用的 GD 库版本低于 2.0.18 时,一个空格字符 而不是分号将被用来作为不同字体文件的“路径分隔符”。不小心使用了此特性将会导致一条警告信息:Warning: Could not find/open font。对受影响的版本来说唯一解决方案就是将字体移动到不包含空格的路径中去。很多情况下字体都放在脚本的同一个目录下。下面的小技巧可以减轻包含的问题。
    <?php
    // Set the enviroment variable for GD
    putenv('GDFONTPATH=' . realpath('.'));
    
    // Name the font to be used (note the lack of the .ttf extension)
    $font = 'SomeFont';
    ?>
    text UTF-8 编码的文本字符串。可以包含十进制数字化字符表示(形式为:&#8364;)来访问字体中超过位置 127 的字符。UTF-8 编码的字符串可以直接传递。命名实体,比如 &copy; 是不支持的。可以考虑使用 html_entity_decode() 来解码命名实体为 UTF-8 字符。 (自 PHP 5.0.0 开始 html_entity_decode() 开始支持)如果字符串中使用的某个字符不被字体支持,一个空心矩形将替换该字符。
  • 返回值

    返回一个含有 8 个单元的数组表示了文本外框的四个角,顺序为坐下角,右下角,右上角,左上角。这些点是相对于文本的而和角度无关,因此“左上角”指的是以水平方向看文字时其左上角。
    本函数同时需要 GD 库和 FreeType 库。
  • 示例

    // Set the content-type
    header('Content-Type: image/png');
    
    // Create the image
    $im = imagecreatetruecolor(400, 60);
    
    // Create some colors
    $white = imagecolorallocate($im, 255, 255, 255);
    $grey = imagecolorallocate($im, 128, 128, 128);
    $black = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 399, 29, $white);
    
    // The text to draw
    $text = 'Testing...';
    // Replace path by your own font path
    $font = 'kraash.woff.ttf';
    
    // Add some shadow to the text
    imagettftext($im, 10, 0, 11, 21, $grey, $font, $text);
    
    // Add the text
    imagettftext($im, 10, 0, 10, 20, $black, $font, $text);
    
    // Using imagepng() results in clearer text compared with imagejpeg()
    imagepng($im);
    imagedestroy($im);
    
    以上示例输出:
    gd_45      
    
  • 相关函数

    imagettfbbox() - 取得使用 TrueType 字体的文本的范围