PNG erzeugen und Schrift ändern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PNG erzeugen und Schrift ändern

    Hi Leute!!!

    Habe folgendes Script:

    if($zahl==0) {
    $rück="2";
    } else {
    $rück="10";
    }

    $breite = 140;
    $hoehe = 17;
    $schrift="lucon.ttf";
    $x=$rück;
    $y ="5";
    $i=$id;
    $str=$name;
    $path="../img/"; //PFAD
    $extout="out.png"; //ENDUNG
    $picout=ImageCreate($breite,$hoehe); //IMAGE GROESSE
    $col1=ImageColorAllocate($picout,0,102,153); //Hintergrundfarbe
    $col3=ImageColorAllocate($picout,255,255,255); //Schriftfarbe OUT
    ImageFilledRectangle($picout,1,1,100,100,$col1);
    ImageString($picout,$schrift,$x,$y,$str, $col3); //($img,$font,$x,$y,$text,$col)
    $gifname=$path.$i.$extout;
    ImagePNG($picout,$gifname);
    ImageDestroy($picout);

    $extover="over.png"; //ENDUNG
    $pic=ImageCreate(140,17); //IMAGE GROESSE
    $col2=ImageColorAllocate($pic,0,153,102); //Hintergrundfarbe
    $col3=ImageColorAllocate($pic,255,255,255); //Schriftfarbe OVER
    ImageFilledRectangle($pic,1,1,100,100,$col2);
    ImageString($pic,$schrift,$x,$y,$str, $col3);
    $gifover=$path.$i.$extover;
    ImagePNG($pic,$gifover);
    ImageDestroy($pic);

    Nun mein Problem:

    Bild erzeugen funzt!
    Wie und wo muss ich das Scipt ändern, damit ich die Schriftgröße auf dem erstellten Bild ändern kann.

    Webbi
    >>>> Erst denken, dann suchen, dann fragen <<<<

  • #2
    Gar nicht.

    Um eine eigene Schriftart zu verwenden, muss die erstmal als Bitmap-Font auf dem Server liegen und dann mit ImageLoadFont geladen werden.
    Da du aber im ImageString nur den Dateinamen angibst, wird der nach Integer gecastet, was 0 ergibt und dazu führt, dass der PHP-System-Font benutzt wird.

    Hast du deinen ttf tatsächlich in ein Bitmap-Font-Format konvertiert, dass PHP lesen kann, dann kannst du die Größe der Schriftzeichen nur auslesen.

    Drei Auswege:
    1) Den Bitmap-Font gleich in der richtigen Größe erzeugen
    2) den Text erst in eine eigene Grafik schreiben, und den Text per ImageCopyResized skalieren und rüberkopieren.
    3) Mit PostScript-Fonts arbeiten (ImagePSLoadFont und ImagePSText)
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Man kann auch zu der Bibliothek (GD) Freetype´s installieren, womit man dann TrueType-Fonts verwenden kann. Sollte PHP aber nicht zusammen mit der GD-Bibliothek übersetzt worden sein, kann man sie auch dynamisch über ein Modul ansprechen. Dafür muß man aber die Binärdistribution haben.
      Das dynamische laden erfogt über die Funktion dl:
      dl("php_gd.dll"); //für Win
      dl("php_gd.so"); //für Unix
      Unter PHP3 heißt die Datei php3_gd.xx.

      Infos unter http://www.boutell.com/gd

      Kommentar


      • #4
        Hi Leute!

        Habe es geschafft!
        Hier jetzt ma dat SCRIPT:

        if($parentID==0) {
        $rueckx=3;
        $ruecky=18;
        $h=22;
        } else {
        $rueckx=3;
        $ruecky=10;
        $h=17;
        }

        $breite = 140;
        $hoehe = $h;

        Header ("Content-type: image/png");

        $x=$rueckx;
        $y =$ruecky;
        $size=24;
        $i=$id;
        $str=$name;

        $path="../img/"; //PFAD zum speichern
        $extout="out.png"; //ENDUNG
        $picout=ImageCreat($breite,$hoehe); //IMAGE GROESSE
        $col1=ImageColorAllocate($picout,0,102,153); //Hintergrundfarbe
        $col3=ImageColorAllocate($picout,255,255,255); //Schriftfarbe OUT
        $font=ImagePsLoadFont("schrift.pfb");
        ImageFilledRectangle($picout,1,1,100,100,$col1);

        ImagePsText($picout, $str, $font, $size, $col1, $col3, $x, $y);
        ImagePsFreeFont($font);
        $gifname=$path.$i.$extout;
        Imagepng($picout, $gifname, 100); //for best quality... your mileage may vary
        ImageDestroy ($picout);

        $extover="over.png"; //ENDUNG
        $pic=ImageCreate($breite,$hoehe); //IMAGE GROESSE
        $col2=ImageColorAllocate($pic,0,153,102); //Hintergrundfarbe
        $col4=ImageColorAllocate($pic,255,255,255);//SchriftfarbeOVER
        ImageFilledRectangle($pic,1,1,100,100,$col2);
        ImageString($pic, $font, $x, $y, $str, $col4);
        $gifover=$path.$i.$extover;
        ImagePNG($pic,$gifover);
        ImageDestroy($pic);

        Trotzdem Danke

        Webbi

        PS: Hab die Hilfe hier gefunden: http://www.dasforum.de/forum/showthr...&threadid=8236
        >>>> Erst denken, dann suchen, dann fragen <<<<

        Kommentar

        Lädt...
        X