Bild + unbekannte Breite?

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

  • Bild + unbekannte Breite?

    Hallo,

    ich habe atm ein denke mal kleines Problem beim Erzeugen eines Bildes.

    Ich habe einen Text und möchte ein Bild erzeugen mit einem speziellen .ttf-font, jedoch weiß ich nicht genau, wie ich die Weite des Textes mit dem Font bestimmen soll.

    Auf php.net bin ich auf die Funktionen imagefontwidth/height und imageloadfont gestoßen, jedoch funktioniert das ganze nich so wirklich:

    PHP-Code:
    $fsize imageloadfont("fonty.ttf");
    $fwidth imagefontwidth($fsize);
    $fheight imagefontheight($fsize);
    $bildtext "lalilu";
    $bildwidth $fwidth*strlen($bildtext);
    $im imagecreatetruecolor($bildwidth,$fheight)
     or die(
    "Cannot Initialize new GD image stream");
    $font_color imagecolorallocate($im255255255);
    imagettftext($im,$fsize00,$fsize$font_color,"./Paco.ttf"$bildtext)
     or die(
    "imagettffehler");
    header ("Content-type: image/png");
    imagepng($im);
    imagedestroy($im); 
    Liegts evtl daran, dass .ttf nicht als bitmap-font "zugelassen" wird?

    Andersrum gefragt: Hat jmd eine Lösung für das Problem, wie ich die Weite eines Bildes bestimmen kann mit einem .ttf-Font + unbekannte Textlänge?

    mfg

  • #2
    http://de.php.net/manual/de/function.imagettfbbox.php
    Wir werden alle sterben

    Kommentar


    • #3
      Ah kay,

      selten dämlich übersehen.
      ..aber irgendwas mach ich dann auch bei der Funktion falsch:

      PHP-Code:
      $fsize 20;
      $bidltext "schalallalalaaalals";
      $bildwerte imagettfbbox($fsize,0"fonty.ttf"$bildtext);
      print_r($bildwerte); 
      Ausgabe:
      Code:
      Array ( [0] => -1 [1] => -1 [2] => -1 [3] => -1 [4] => -1 [5] => -1 [6] => -1 [7] => -1 )
      Der font liegt natürlich im gleichen Verzeichnis .... (falls jmd auf die Idee kommt zu fragen)..

      Noch nen Tipp pls?

      Kommentar


      • #4
        $bidltext !== $bildtext

        Noch nie von error_reporting() gehört?
        Wir werden alle sterben

        Kommentar


        • #5
          Doch ... sollte normal auch auf E_All sein ... muss ich wohl nochmal config überprüfen

          mfg

          Kommentar


          • #6
            Hallo,

            ich muss mich doch nochmal dazu melden.

            Ich habe nun ein paar Tage mit der Funktion rumprobiert, hab aber für alle ttf's nie eine optimale Lösung gefunden.
            Ich denke einfach, dass es daran liegt, dass ich die ausgegebenen Werte der Funktion
            http://php.net/imagettfbox
            nicht komplett verstehe bzw. mir das nicht anschaulich machen kann.

            Somit wollte ich mal fragen, ob mir es evtl jmd an einer grafik veranschaulichen könnte, welcher wert wo genau nun auf der grafik ist.

            Ist zwar eine etwas spezielle Frage, aber ich möchte keinen Code verwenden, den ich nicht komplett verstehe..

            Hab mir die Comments der Funktion angeschaut, aber hab am ende die Funktion immer noch nicht 100% verstanden ...
            -> z.b. http://php.net/imagettfbox#75491

            Hoffe mal, dass sich jmd dazu "herablässt" :-)

            mfg

            Kommentar


            • #7
              PHP-Code:
              $x 20;
              $y 30;

              $box imagettfbbox120'C:/WINDOWS/Fonts/ARIAL.TTF''Der Text' );
              imagettftext$img120$x$y
              imagecolorallocatealpha$img25500), 'C:/WINDOWS/Fonts/ARIAL.TTF''Der Text' );

              $col imagecolorallocate$img0255);
              imageline$img$x+$box[0], $y+$box[1], $x+$box[2], $y+$box[3], $col );
              imageline$img$x+$box[2], $y+$box[3], $x+$box[4], $y+$box[5], $col );
              imageline$img$x+$box[4], $y+$box[5], $x+$box[6], $y+$box[7], $col );
              imageline$img$x+$box[6], $y+$box[7], $x+$box[0], $y+$box[1], $col ); 

              Kommentar


              • #8
                Hallo,

                das script von dir hat zwar so nicht funktioniert .... aber okay
                Hab es nun hinbekommen und glaube auch verstanden

                danke!

                mfg
                ps: wie kann es sein, dass eine bestimmte ttf nicht korrekt angezeigt wird sondern solche kästchen .... aber im windows-ttf anzeiger sehe ich sie...

                Kommentar


                • #9
                  das script von dir hat zwar so nicht funktioniert .... aber okay
                  Hab es nun hinbekommen und glaube auch verstanden
                  Ist ja auch kein komplettes Skript, sondern nur ein Minibeispiel, beschränkt auf das nötigste ^^

                  Kommentar


                  • #10
                    Original geschrieben von PHP-Desaster
                    beschränkt auf das nötigste ^^
                    Dann hättest wenigstens noch das imagecreatetruecolor hinschreiben können ... dann hätte ich nicht erst raten müssen, wie groß ich das bild nun mache ..^^

                    aber danke

                    Kommentar


                    • #11
                      So hast du dir den Code wenigstens ansehen müssen

                      Kommentar


                      • #12
                        <spässchen>
                        Die Baseline mit einzuzeichen, das hättest du ja wenigstens tun können. Wegen der Unterlängen ...
                        </spässchen>
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Original geschrieben von PHP-Desaster
                          So hast du dir den Code wenigstens ansehen müssen
                          Da ich lernen wollte, hätte ich dies wohl so oder so getan ;-)
                          Damit konnte ich zumindest die Sache bei Seite legen bzw. beenden ...
                          Nun gehts an Thumbnails erstellen, aber werde mir wohl erstmal noch die meistens image-Funktionen anschauen, um einen Überlick zu erhalten.

                          @combie: Das war mein Hauptproblem Bis ich das verstanden hatte, war es schon spät xD

                          Kommentar


                          • #14
                            So altes Thema, sorry.

                            Mittlerweile hab ich das Problem wieder mit der baseline. Ich weiß nicht, wie ich damals darauf gekommen bin, aber nun komme ich nicht mehr darauf. Meine alten Codes hab ich leider auch nicht mehr zur Verfügung, wie ich damit rumprobiert hatte..

                            Kann mir vlt nochmal jmd. nen Hint geben, sodass ich auch den unteren Teil des g,y etc. sehen kann? Also wie ich auf die Baseline komme...

                            Danke.

                            mfg

                            Kommentar


                            • #15
                              Hallo,

                              ich bin mir nicht sicher, ob ich dich richtig verstanden habe, aber die einzelnen Maße für Oberlänge, Grundline u. s. w. kann man mit imagettfbbox ermitteln. Dazu rufst du es mit verschiedenen Texten auf, z. B. "X" für die Versalhöhe, "dy" für die Gesamthöhe zwischen k- und p-Linie oder "x" für die Mittellänge. Die Höhe bekommst du jeweils aus [FONT="Courier New"]$bbox[1] - $bbox[7][/FONT], wobei $bbox das Ergebnis des imagettfbbox-Aufrufs ist.

                              Siehe auch die "Komplettlösung"

                              Gruß,

                              Amica
                              Zuletzt geändert von AmicaNoctis; 30.09.2009, 05:10.
                              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                              Super, danke!
                              [/COLOR]

                              Kommentar

                              Lädt...
                              X