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 →