PHP 8.4.0 RC4 available for testing

imageloadfont

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

imageloadfontCarrega uma nova fonte

Descrição

imageloadfont(string $filename): GdFont|false

imageloadfont() carrega um mapa de bits definido pelo usuário e retorna seu identificador.

Parâmetros

filename

O formato de arquivo de fonte atualmente é binário e dependente de arquitetura. Isto significa que os arquivos de fonte devem ser gerados no mesmo tipo de CPU da máquina onde o PHP estiver sendo executado.

Formato de arquivo de fonte
posição do byte tipo de dados C descrição
bytes 0-3 int número de caracteres na fonte
bytes 4-7 int valor do primeiro caractere na fonte (normalmente 32 para espaço)
bytes 8-11 int largura em pixel para cada caractere
bytes 12-15 int altura em pixel para cada caractere
bytes 16- char array com dados de caracteres, um byte por pixel em cada caractere, para um total de (num_caracteres * largura * altura) bytes.

Valor Retornado

Retorna uma instância GdFont, ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.1.0 Retorna uma instância GdFont agora; anteriormente, um int era retornado.

Exemplos

Exemplo #1 Exemplo de uso de imageloadfont()

<?php
// Cria uma nova instância de imagem
$im = imagecreatetruecolor(50, 20);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);

// Torna o fundo branco
imagefilledrectangle($im, 0, 0, 49, 19, $white);

// Carrega a fonte GD e escreve 'Hello'
$font = imageloadfont('./04b.gdf');
imagestring($im, $font, 0, 0, 'Hello', $black);

// Mostra no navegador
header('Content-type: image/png');

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

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
5
siker at norwinter dot com
19 years ago
Working under the assumption that the only 'architecture dependant' part of the font files is endianness, I wrote a quick and dirty Python script to convert between the two. It has only been tested on a single font on a single machine so don't bet your life on it working. All it does is swap the byte order of the first four ints.

#!/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());

I successfully used this script to convert anonymous.gdf, from one of the font links below, into something useable on Mac OS X.
up
1
alex at bestgames dot ro
19 years ago
Confirmation code generation for preventing automated registrations on a website.

Function arguments are:
$code - the code that you shall random generate
$location - relative location of the image that shall be generated
$fonts_dir - relative location for the GDF fonts directory

This function will create an image with the code given by you and will save it in the directory specified with the name formed by MD5 hash of the code.

You may insert as many font types in the fonts directory as you wish, with random names.

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

}

?>
up
0
matthew at exanimo dot com
19 years ago
Remember - GD fonts aren't antialiased. If you're planning on using a pre-existing (TrueType) font, you may want to consider using imagettftext() instead of phillip's function.
To Top