imageloadfont()
verwendet benutzerdefinierte Bitmaps zu laden. Wenn Sie nur Arial oder andere TrueType-Fonts (.ttf) oder OpenType-Fonts (.otf) verwenden möchten (die Unterstützung für letzteres in GD lib ist fehlerhaft), dann brauchen Sie imagettftext()
. Bevor Sie jedoch imagettftext()
verwenden und Text in Ihr Bild schreiben, müssen Sie zuerst wissen, ob es passt. Um dies zu wissen, müssen Sie einfach imagettfbbox()
anrufen und ihm die Schriftgröße, den Winkel des Textes (0 für horizontalen Text), den Pfad zu Ihrer .ttf oder .otf Schriftdatei und die Textzeichenfolge selbst übergeben und es wird ein zurückgegeben Array mit 8 Elementen, die vier Punkte repräsentieren, die die Begrenzungsbox des Textes bilden (siehe PHP Handbuch für Besonderheiten). Sie können dann auf diese Array-Elemente verweisen und Berechnungen durchführen, um die Breite und Höhe zu ermitteln, die diese bestimmte Textfolge belegen wird. Sie können diese Werte dann verwenden, um ein Bild mit einer bestimmten Breite und Höhe zu erstellen, sodass der Text vollständig angezeigt werden kann.
Hier ist ein einfaches Skript, das vollbringt, was Sie versuchen zu tun, um Ihnen den Einstieg:
<?php # Script 1
/*
* This page creates a simple image.
* The image makes use of a TrueType font.
*/
// Establish image factors:
$text = 'Sample text';
$font_size = 12; // Font size is in pixels.
$font_file = 'Arial.ttf'; // This is the path to your font file.
// Retrieve bounding box:
$type_space = imagettfbbox($font_size, 0, $font_file, $text);
// Determine image width and height, 10 pixels are added for 5 pixels padding:
$image_width = abs($type_space[4] - $type_space[0]) + 10;
$image_height = abs($type_space[5] - $type_space[1]) + 10;
// Create image:
$image = imagecreatetruecolor($image_width, $image_height);
// Allocate text and background colors (RGB format):
$text_color = imagecolorallocate($image, 255, 255, 255);
$bg_color = imagecolorallocate($image, 0, 0, 0);
// Fill image:
imagefill($image, 0, 0, $bg_color);
// Fix starting x and y coordinates for the text:
$x = 5; // Padding of 5 pixels.
$y = $image_height - 5; // So that the text is vertically centered.
// Add TrueType text to image:
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font_file, $text);
// Generate and send image to browser:
header('Content-type: image/png');
imagepng($image);
// Destroy image in memory to free-up resources:
imagedestroy($image);
?>
ändern Werte entsprechend Ihren Bedürfnissen passen. Vergessen Sie nicht, das PHP-Handbuch zu lesen.
Take a siehe [imagettfbbox] (http://www.php.net/manual/en/function.imagettfbbox.php) und [imagettftext] (http://php.net/manual/en/function.imagefttext.php). – Vatev