Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#1

[PHP] imagestring() bzw. imagettftext() und externe Fornts

  Alt 1. Jun 2006, 08:25
Hi,

könnt ihr mal jemand einen Blick auf meine mail2image Funktion werfen ?
Sie funktioniert problemlos (lokal und beim ISP), wenn ich imagestring() mit den eingebetteten Standard-Fonts verwende. Das generierte PNG gefällt mir aber nicht, weil bei den 5 engebetteten Fonts aber keine serifenlose Schrift mit einer Höhe von 10 Pixeln dabei ist, und die Schrift des Images nicht zu meinem Design passt.

Jetzt habe ich folgende Möglichkeiten gefunden, um eigene Schriften zu verwenden:
1. TTF
Code:
   $font = '../styles/fonts/verdana.ttf';
   imagettftext($img, 10, 0, 2, 11, $color['fg'], $font, $mail);
und
2. GDF
Code:
   $font = '../styles/fonts/8x13iso.gdf';
   imagestring($img,imageloadfont($font),0,0,$mail,$color['fg']);
Beide Varianten funktionieren auf meinem lokalen Appache problemlos.
Wenn ich den Code jedoch auf dem Webserver meines ISP's verwende, wird die Schrift scheinbar nicht gerendert.
Die Funktion erzeugt nur transparente PNG's .

Ich bin, was PHP betrifft, noch ziemlich grün hinter den Ohren. Falls ihr eine Idee habt, oder eventuell eine bessere Möglichkeit kennt, dann immer her damit .

Code:
function mail2image($user)
{
    $userDomain = "@meinedomain.de";

    // Email zusammensetzen
    $mail = $user.$userDomain;

    // Breite kalkulieren
    $width = 8 * strlen($mail);
   
    //Bild erzeugen
    $img = imagecreate($width, 15); // pro Buchstabe 8px breit und 13px hoch
   
    //Hintergrundfarbe definieren
    $color['hg'] = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
   
    //Vordergrundfarbe definieren
    $color['fg'] = imagecolorallocate($img, 0x00, 0x00, 0x66);
   
    //Text auf $img schreiben
   
    // Test mit den embedded GD-Fonts > funktioniert lokal UND beim ISP
    imagestring($img,4,0,0,$mail,$color['fg']);
   
    // Problem!
    //
    // Test TTF > funktioniert auf meinem lokalen System, aber nicht beim ISP :o(
    // $font = '../styles/fonts/verdana.ttf';
    // imagettftext($img, 10, 0, 2, 11, $color['fg'], $font, $mail);
    // 
    // Test GDF > funktioniert auf meinem lokalen System, aber nicht beim ISP :o(
    // $font = '../styles/fonts/8x13iso.gdf';
    // imagestring($img,imageloadfont($font),0,0,$mail,$color['fg']);
    //
    // Ende Problem!

    //Hintergrundfarbe entfernen (transparent)
    imagecolortransparent($img, $color['hg']);
   
    //PNG erzeugen
    header("Content-type: image/png");
    imagepng($img);
    imagedestroy($img);
}


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat