在线文档教程
PHP
图像 | Image

imagettftext

imagettftext

(PHP 4, PHP 5, PHP 7)

imagettftext - 使用TrueType字体将文本写入图像

描述

array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )

使用TrueType字体将给定的文本写入图像。

参数

`image`

一个图像资源,由图像创建函数之一返回,如imagecreatetruecolor()。

size

字体大小。根据您的GD版本,应该将其指定为像素大小(GD1)或点大小(GD2)。

angle

以度为单位的角度,0度是从左到右的阅读文本。较高的值表示逆时针旋转。例如,值为90会导致从底部到顶部的阅读文本。

x

由x和y给出的坐标将定义第一个字符的基点(大致在字符的左下角)。 这与imagestring()不同,其中x和y定义了第一个字符的左上角。 例如,“左上角”是0,0。

y

y坐标。这设置了字体基线的位置,而不是字符的底部。

color

颜色索引。使用颜色索引的负值可以关闭抗锯齿功能。请参阅imagecolorallocate()。

fontfile

您希望使用的TrueType字体的路径。

根据PHP所使用的GD库的版本,当fontfile不以前导符/ /开头时,.ttf将被附加到文件名中,并且库将尝试沿着库定义的字体路径搜索该文件名。

当使用低于2.0.18的GD库版本时,空格 字符而不是分号被用作不同字体文件的'路径分隔符'。无意中使用此功能将导致警告消息:警告:无法找到/打开字体。对于这些受影响的版本,唯一的解决方案是将字体移动到不包含空格的路径。

在很多情况下,字体与使用它的脚本位于相同的目录下,以下技巧将缓解任何包含问题。

<?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'; ?>

注意注意的open_basedir并不能 适用于fontfile

text

UTF-8编码中的文本字符串。

可能包含十进制数字字符引用(形式为:€)以访问超出位置127的字体中的字符。支持十六进制格式(如©)。UTF-8编码的字符串可以直接传递。

命名实体(如©)不受支持。考虑使用html_entity_decode()将这些命名实体解码为UTF-8字符串。

如果在字体不支持的字符串中使用字符,则空心矩形将替换该字符。

返回值

返回一个包含8个元素的数组,表示构成文本边界框的四个点。 点的顺序是左下,右下,右上,左上。 无论角度如何,这些点都是相对于文本的,所以“左上角”表示在左上角水平看到文本时。 错误时返回FALSE。

更新日志

描述
5.2.0现在可以在文本中指定一个十六进制实体。

例子

示例#1 imagettftext()示例

此示例脚本将生成一个白色PNG 400x30像素,字体Arial中带有黑色(带灰色阴影)的单词“Testing ...”。

<?php // Set the content-type header('Content-Type: image/png' // Create the image $im = imagecreatetruecolor(400, 30 // 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 = 'arial.ttf'; // Add some shadow to the text imagettftext($im, 20, 0, 11, 21, $grey, $font, $text // Add the text imagettftext($im, 20, 0, 10, 20, $black, $font, $text // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im imagedestroy($im ?>

上面的例子会输出类似于:

注意

注意:只有PHP编译时支持freetype(-- with-freetype-dir = DIR)才能使用该函数。

扩展内容

  • imagettfbbox() - 使用TrueType字体给出文本的边界框

  • imagefttext() - 使用FreeType 2使用字体将文本写入图像

← imagettfbbox

imagetypes →