PHP 7.2.7 Released

imageloadfont

(PHP 4, PHP 5, PHP 7)

imageloadfontLädt eine neue Schriftart

Beschreibung

int imageloadfont ( string $file )

ImageLoadFont() lädt eine benutzerdefinierte Bitmap-Schriftart und gibt deren Kennung zurück.

Parameter-Liste

file

Das Scrhiftart-Dateiformat ist zurzeit ein architekturabhängiges, binäres Format. Das bedeutet, dass Schriftart-Dateien immer auf der selben Architektur erzeugen müssen, auf dem diese verwendet werden sollen.

Scrhiftart-Dateiformat
Byte-Position C Daten-Typ Beschreibung
Byte 0-3 int Anzahl der Zeichen der Schriftart
Byte 4-7 int Wert des ersten Zeichens der Schriftart (meist 32 für Leerzeichen)
Byte 8-11 int Pixel-Breite jedes Zeichens
Byte 12-15 int Pixel-Höhe jedes Zeichens
Byte 16- char Zeichen-Daten als Array, ein Byte je Pixel für jedes Zeichen; in der Summe also (Anzahl-Zeichen * Breite * Höhe)-Bytes.

Rückgabewerte

Die Schriftartkennung, die immer größer als 5 ist, um Konflikte mit den integrierten Schriftarten zu verhindern, oder FALSE im Fehlerfall.

Beispiele

Beispiel #1 imageloadfont() Verwendungsbeispiel

<?php
// Erzeuge ein neues Bild
$im imagecreatetruecolor(5020);
$black imagecolorallocate($im000);
$white imagecolorallocate($im255255255);

// Färbe den Hintergrund weiß
imagefilledrectangle($im004919$white);

// Lade die GD-Schriftart und schreibe 'Hallo'
$font imageloadfont('./04b.gdf');
imagestring($im$font00'Hallo'$black);

// Ausgabe an Browser
header('Content-type: image/png');

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

Siehe auch

add a note add a note

User Contributed Notes 4 notes

up
5
siker at norwinter dot com
12 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
3
alex at bestgames dot ro
12 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
2
angryziber at mail dot com
17 years ago
You all should look at the GD image library site for information on extra fonts, it can be found at http://www.boutell.com/gd/
up
-1
matthew at exanimo dot com
12 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