imageloadfont

(PHP 4, PHP 5, PHP 7, PHP 8)

imageloadfont加载新字体

描述

imageloadfont(string $filename): GdFont|false

imageloadfont() 加载用户定义的位图并返回其标识符。

参数

filename

当前字体文件格式为二进制,并且依赖于体系结构。这意味着您应该在与运行 PHP 的机器相同的类型的 CPU 上生成字体文件。

字体文件格式
字节位置 C 数据类型 描述
字节 0-3 int 字体中的字符数
字节 4-7 int 字体中第一个字符的值(通常为 32 表示空格)
字节 8-11 int 每个字符的像素宽度
字节 12-15 int 每个字符的像素高度
字节 16- char 包含字符数据的数组,每个字符中每个像素一个字节,总共 (nchars*width*height) 字节。

返回值

返回一个 GdFont 实例,如果失败则返回 false

变更日志

版本 描述
8.1.0 现在返回 GdFont 实例;以前返回 int

示例

示例 #1 imageloadfont() 使用示例

<?php
// 创建一个新的图像实例
$im = imagecreatetruecolor(50, 20);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);

// 使背景为白色
imagefilledrectangle($im, 0, 0, 49, 19, $white);

// 加载 gd 字体并写入 'Hello'
$font = imageloadfont('./04b.gdf');
imagestring($im, $font, 0, 0, 'Hello', $black);

// 输出到浏览器
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

参见

添加备注

用户贡献的备注 4 则备注

siker at norwinter dot com
18 年前
假设字体文件唯一“依赖于体系结构”的部分是字节序,我编写了一个快速简陋的 Python 脚本用于在两者之间进行转换。它只在一个机器上的一个字体上进行了测试,所以不要指望它能一直正常工作。它只是交换了前四个整数的字节序。

#!/usr/bin/env python

f = open("myfont.gdf", "rb");
d = open("myconvertedfont.gdf", "wb");

for i in xrange(4)
b = [f.read(1) for j in xrange(4)];
b.reverse();
d.write(''.join(b));

d.write(f.read());

我成功地使用此脚本将匿名。gdf(来自以下字体链接之一)转换为可在 Mac OS X 上使用的格式。
alex at bestgames dot ro
19 年前
用于防止网站自动注册的确认码生成。

函数参数是
$code - 您要随机生成的代码
$location - 要生成的图像的相对位置
$fonts_dir - GDF 字体目录的相对位置

此函数将创建一个包含您提供的代码的图像,并将其保存到指定的目录中,文件名由代码的 MD5 哈希值组成。

您可以在字体目录中插入任意数量的字体类型,并使用随机名称。

<?php
function generate_image($code, $location, $fonts_dir)
{
$image = imagecreate(150, 60);
imagecolorallocate($image, rand(0, 100), rand(100, 150), rand(150, 250));
$fonts = scandir($fonts_dir);

$max = count($fonts) - 2;

$width = 10;
for (
$i = 0; $i <= strlen($code); $i++)
{
$textcolor = imagecolorallocate($image, 255, 255, 255);
$rand = rand(2, $max);
$font = imageloadfont($fonts_dir."/".$fonts[$rand]);

$fh = imagefontheight($font);
$fw = imagefontwidth($font);

imagechar($image, $font, $width, rand(10, 50 - $fh), $code[$i], $textcolor);
$width = $width + $fw;

}

imagejpeg($image, $location."/".md5($code).".jpg", 100);
imagedestroy($image);

return
$code;

}

?>
matthew at exanimo dot com
18 年前
请记住 - GD 字体没有抗锯齿。如果您计划使用预先存在的 (TrueType) 字体,您可能需要考虑使用 imagettftext() 而不是 phillip 的函数。
angryziber at mail dot com
23 年前
你们都应该查看 GD 图像库网站以获取有关额外字体的信息,可以在 http://www.boutell.com/gd/ 找到它。
To Top