wahsaga: Truetype-Text in Bild schreiben / GD-Lib

hi,

ich versuche mich grade an die dynamische erstellung von bildern in php mit hilfe der gdlib heranzutasten.
will ein einfaches bild erzeugen, in dem mit hilfe der funktion ImageTTFText() ein text ausgegeben wird.

GD-Lib 2 ist in php eingebunden, FreeType Support wird von info.php als "enabled" angegeben.

aber die funktion ImageTTFText() gibt mir immer nur folgende warning aus:
Could not find/open font in h:\apache group\apache\htdocs\test\bild.php on line 5

hab im archiv schon ein paar hinweise darauf gefunden, dass es wohl an der pfadangabe für den .ttf-font liegt.

aber wie muss ich den pfad denn nun korrekt angeben?
sowohl das script als auch die font-datei liegen im selben ordner /test, der sich direkt unterhalb von htdocs befindet.
habe folgende versionen probiert:
"font.ttf"
"/test/font.ttf"
"./test/font.ttf"
"../test/font.ttf"
auch mit font direkt ins htdocs-verzeichnis gelegt und dann mit "/font.ttf" oder "../font.ttf" hat es nicht funktioniert, warning wie oben.

hier noch das script, aus dem php-manual übernommen, lediglich gif durch png ausgetauscht (header und imagePNG):

<?php
$im = imagecreate (400, 30);
$black = ImageColorAllocate ($im, 0, 0, 0);
$white = ImageColorAllocate ($im, 255, 255, 255);
ImageTTFText ($im, 20, 0, 10, 20, $white, "font.ttf", "test");
Header ("Content-type: image/png");
ImagePNG ($im);
ImageDestroy ($im);
?>

gruss,
wahsaga

  1. Moin!

    aber die funktion ImageTTFText() gibt mir immer nur folgende warning aus:
    Could not find/open font in h:\apache group\apache\htdocs\test\bild.php on line 5

    hab im archiv schon ein paar hinweise darauf gefunden, dass es wohl an der pfadangabe für den .ttf-font liegt.

    Exakt das sagt die Fehlermeldung aus: "Konnte Font-Datei nicht finden."

    aber wie muss ich den pfad denn nun korrekt angeben?

    Das hängt von deiner Dateiverteilung ab (ach was, nee echt jetz' :-o). ;)

    sowohl das script als auch die font-datei liegen im selben ordner /test, der sich direkt unterhalb von htdocs befindet.
    habe folgende versionen probiert:
    "font.ttf"

    Das sollte eigentlich funktionieren, verweist auf eine Datei im gleichen Verzeichnis.

    "/test/font.ttf"

    Das ist sicher falsch, da du WIndows hast, auf dem es kein Rootverzeichnis "/" gibt, und auch keines "/test" - da fehlt schlicht der Laufwerksbuchstabe vorne vor.

    "./test/font.ttf"

    Das ist auch falsch, da im Verzeichnis des Skripts ja kein Verzeichnis "test" existiert.

    "../test/font.ttf"

    Das sollte, sofern du dich _im_ Verzeichnis "test" befindest, identisch mit Version 1 sein.

    auch mit font direkt ins htdocs-verzeichnis gelegt und dann mit "/font.ttf" oder "../font.ttf" hat es nicht funktioniert, warning wie oben.

    hier noch das script, aus dem php-manual übernommen, lediglich gif durch png ausgetauscht (header und imagePNG):

    Dumme Frage: Dein TTF-Font heißt "font.ttf"?

    Hast du es schon mal mit einem absoluten Pfad versucht?

    - Sven Rautenberg

    --
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
    1. hi Sven,

      Exakt das sagt die Fehlermeldung aus: "Konnte Font-Datei nicht finden."

      oder konnte sie nicht öffnen - halte ich unter win ohne irgendwelche einschränkungen der dateirechte aber für wenig wahrscheinlich.
      font-datei ist auch korrekt, verwende diesen font sonst auch in grafikprogrammen etc. (hab's deshalb auch noch mit anderen .ttf-fonts ausprobiert, um fehlerhafte font-datei als ursache ausschliessen zu können.)

      "font.ttf"
      Das sollte eigentlich funktionieren, verweist auf eine Datei im gleichen Verzeichnis.

      ja, _sollte_.
      "funzt" aber nicht.

      das einige der weiteren geschilderten versuche eigentlich unsinnig sind, ist mir eigentlich auch klar - waren eher verzweiflungs-versuche.

      Dumme Frage: Dein TTF-Font heißt "font.ttf"?

      nein, wenn ich "ernie!" rufe, meine ich doch immer den bernd ...

      • natürlich heisst sie so ;-)

      Hast du es schon mal mit einem absoluten Pfad versucht?

      ja, habe ich - sowohl
      h:\apache group\apache\htdocs\test\font.ttf
      als auch
      h:/apache group/apache/htdocs/test/font.ttf

      aber das verursacht wahrscheinlich noch eher probleme, wegen dem blank im pfad (warum zum ... schlägt das installationspaket während der installation auch so'n mist wie "apache group" vor? da denkt man zu dem zeitpunkt natürlich noch nicht dran ... hmpf.)

      gruss,
      wahsaga

    2. hi,

      "/test/font.ttf"
      Das ist sicher falsch, da du WIndows hast, auf dem es kein Rootverzeichnis "/" gibt, und auch keines "/test" - da fehlt schlicht der Laufwerksbuchstabe vorne vor.

      so, hab's jetzt nochmal online auf meinem webspace vom provider ausprobiert - da klappt es unter der bedingung, dass ich den pfad vom root (?) aus angebe, also
      "/home/{username}/www.wazgnuks.net/test/font.ttf"

      aber direkt "font.ttf" will er nicht, auch wenn script und fontdatei im selben verzeichnis liegen.

      ist das normal?
      wenn ja, wieso bloss steht dazu im manual bei ImageTTFText() nicht weiters als "Fontfile ist der Pfad zur TTF-Datei, die Sie verwenden wollen." ...?

      hmm, vielleicht hätte ich den user-kommentaren etwas mehr beachtung schenken sollen, da wird auch auf eben diesen fehler eingegangen.
      da wird realpath("font.ttf") als argument für imagettftext empfohlen - haut bei mir aber auch nicht hin.

      gruss,
      wahsaga