Ankündigung

Einklappen
Keine Ankündigung bisher.

ImageTTFBBox probleme

Einklappen

Neue Werbung 2019

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

  • ImageTTFBBox probleme

    Hallo

    ich messe mit ImageTTFBBox den Text und gebe mir die länge in PX aus.
    Doch leider scheint das nicht ganz zu klappen habe einmal die Werte die in dem Inputfeld stehen gemessen und dann das Inputfeld auf die entsprechende Größe formatiert.
    Doch wenn ich darunter noch ein Inputfeld mache mit der gleichen größe ist das Feld eine ganz andere größe.

    Ich hoffe ihr versteht was ich meine hier mal der Code.
    Code:
    <html>
    <head>
      <title></title>
    </head>
    <body>
    <?php
     $Schriftgroesse = '50px';
     $Schrift01 = 'arial.TTF';
    
     $Text01 = 'Rund';
     $Text02 = 'Wasserball';
     $Text03 = 'Wasserball';
     $Text04 = 'Hirschvogel';
     $Text05 = 'Bandarmierung';
    
             $dimtxt01 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text01);
               $phpgroesse01 =($dimtxt01['2']);
    
             $dimtxt02 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text02);
               $phpgroesse02 =($dimtxt02['2']);
    
             $dimtxt03 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text03);
               $phpgroesse03 =($dimtxt03['2']);
    
             $dimtxt04 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text04);
               $phpgroesse04 =($dimtxt04['2']);
    
             $dimtxt05 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text05);
               $phpgroesse05 =($dimtxt05['2']);
    ?>
     <table>
       <tr>
         <td align="center">
           <input style="width:<?=$phpgroesse01?>;font-size:<?=$Schriftgroesse?>" type="text" value="<?=$Text01?>">
         </td>
         <td align="center">
           <input style="width:<?=$phpgroesse02?>;font-size:<?=$Schriftgroesse?>" type="text" value="<?=$Text02?>">
         </td>
         <td align="center">
           <input style="width:<?=$phpgroesse03?>;font-size:<?=$Schriftgroesse?>" type="text" value="<?=$Text03?>">
         </td>
         <td align="center">
           <input style="width:<?=$phpgroesse04?>;font-size:<?=$Schriftgroesse?>" type="text" value="<?=$Text04?>">
         </td>
         <td align="center">
           <input style="width:<?=$phpgroesse05?>;font-size:<?=$Schriftgroesse?>" type="text" value="<?=$Text05?>">
         </td>
       </tr>
     </table>
     <table style="font-size:11px" border="1">
       <tr>
        <td align="center" style="width:<?=$phpgroesse01?>">
           <?=$phpgroesse01.'px'?>
        </td>
        <td align="center" style="width:<?=$phpgroesse02?>">
           <?=$phpgroesse02.'px'?>
        </td>
        <td align="center" style="width:<?=$phpgroesse03?>">
           <?=$phpgroesse03.'px'?>
        </td>
        <td align="center" style="width:<?=$phpgroesse04?>">
           <?=$phpgroesse04.'px'?>
        </td>
        <td align="center" style="width:<?=$phpgroesse05?>">
           <?=$phpgroesse05.'px'?>
        </td>
       </tr>
     </table>
    </body>
    </html>

  • #2
    Bereinige erstmal die Warnings die geworfen werden, wenn man deinen Code so verwendet.

    Kommentar


    • #3
      Hallo

      also bei mir kommen keine warnings, wenn ich fragen darf welche bei dir kommen?
      Es könnte daran liegen das du die extension=php_gd2.dll in der PHP.ini aktivieren mußt.

      Kommentar


      • #4
        Warning: imagettfbbox() expects parameter 1 to be double, string given in T:\Webserver\projects\local\host\public\test.php on line 16

        Warning: imagettfbbox() expects parameter 1 to be double, string given in T:\Webserver\projects\local\host\public\test.php on line 19

        Warning: imagettfbbox() expects parameter 1 to be double, string given in T:\Webserver\projects\local\host\public\test.php on line 22

        Warning: imagettfbbox() expects parameter 1 to be double, string given in T:\Webserver\projects\local\host\public\test.php on line 25

        Warning: imagettfbbox() expects parameter 1 to be double, string given in T:\Webserver\projects\local\host\public\test.php on line 28
        Ich rate dir dein error_reporting() auf E_ALL zu setzen.

        Kommentar


        • #5
          Hallo

          Danke für den Tip


          ich bekomme trotzdem eine andere Meldung mit der werde ich aber nun erstmal weiter suchen danke.

          Notice: A non well formed numeric value encountered in F:\Inetpub\wwwroot\Arbeit\Test01.php on line 20

          Notice: A non well formed numeric value encountered in F:\Inetpub\wwwroot\Arbeit\Test01.php on line 23

          Notice: A non well formed numeric value encountered in F:\Inetpub\wwwroot\Arbeit\Test01.php on line 26

          Notice: A non well formed numeric value encountered in F:\Inetpub\wwwroot\Arbeit\Test01.php on line 29

          Notice: A non well formed numeric value encountered in F:\Inetpub\wwwroot\Arbeit\Test01.php on line 32

          Kommentar


          • #6
            "50px" ist nunmal keine Zahl, sondern ein String.

            Kommentar


            • #7
              Hallo

              Jetzt stehe ich total auf dem schlauch wie sage ich den nun nochmal das 50PX ein zahl ist.

              Ich glaube ich gehe schlafen.

              Oh gott bin ich dämlich.

              Ich habe nun keine Fehlermeldung mehr ich poste nochmal den Code.


              Code:
              <html>
              <head>
                <title></title>
              </head>
              <body>
              <?php
              
              error_reporting(E_ALL);
              
              
               $Schriftgroesse = '20';
               $Schrift01 = 'arial.TTF';
              
               $Text01 = 'Rund';
               $Text02 = 'Wasserball';
               $Text03 = 'Wasserfall';
               $Text04 = 'Hirschvogel';
               $Text05 = 'Bandarmierung';
              
                       $dimtxt01 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text01);
                         $phpgroesse01 =($dimtxt01['2']);
              
                       $dimtxt02 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text02);
                         $phpgroesse02 =($dimtxt02['2']);
              
                       $dimtxt03 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text03);
                         $phpgroesse03 =($dimtxt03['2']);
              
                       $dimtxt04 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text04);
                         $phpgroesse04 =($dimtxt04['2']);
              
                       $dimtxt05 = ImageTTFBBox($Schriftgroesse, 0, $Schrift01, $Text05);
                         $phpgroesse05 =($dimtxt05['2']);
              ?>
               <table>
                 <tr>
                   <td align="center">
                     <input style="width:<?=$phpgroesse01.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text01?>">
                   </td>
                   <td align="center">
                     <input style="width:<?=$phpgroesse02.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text02?>">
                   </td>
                   <td align="center">
                     <input style="width:<?=$phpgroesse03.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text03?>">
                   </td>
                   <td align="center">
                     <input style="width:<?=$phpgroesse04.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text04?>">
                   </td>
                   <td align="center">
                     <input style="width:<?=$phpgroesse05.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text05?>">
                   </td>
                 </tr>
               </table>
              
               <table style="font-size:11px">
                 <tr>
                  <td align="center">
                     <input style="width:<?=$phpgroesse01?>">
                  </td>
                  <td align="center">
                     <input style="width:<?=$phpgroesse02?>">
                  </td>
                  <td align="center">
                     <input style="width:<?=$phpgroesse03?>">
                  </td>
                  <td align="center">
                     <input style="width:<?=$phpgroesse04?>">
                  </td>
                  <td align="center">
                     <input style="width:<?=$phpgroesse05?>">
                  </td>
                 </tr>
               </table>
              </body>
              </html>
              Hast Du jetzt noch eine Fehlermeldung?

              Kommentar


              • #8
                Lass das "px" weg. Falls du die Einheit für CSS brauchst, musst du sie eben zusätzlich hinschreiben. Aber wenn PHP mit Zahlen rechnet müssen auch welche vorliegen.

                Kommentar


                • #9
                  Kannst Du den Code nochmal anschauen?

                  Danke im Vorraus habe Ihn jetzt in dem Posting oben noch mal neu gemacht.

                  Hast Du da noch eine Fehlermeldung?

                  Kommentar


                  • #10
                    Zitat von Sascha321
                    Hast Du da noch eine Fehlermeldung?
                    Nein - aber überprüf das ganze doch selbst:
                    PHP-Code:
                    <?php
                    error_reporting
                    (E_ALL);
                    ini_set('display_errors'true);
                    ?>
                    Einfach an den Anfang des Skriptes setzen.

                    Übrigens solltest du Zahlen auch wie Zahlen behandeln und nicht in Anführungszeichen setzen, das heißt aus
                    PHP-Code:
                    <?php
                    $Schriftgroesse 
                    '20'
                    // und
                    $phpgroesse02 =($dimtxt02['2']);
                    ?>
                    wird
                    PHP-Code:
                    <?php
                    $Schriftgroesse 
                    20
                    // und
                    $phpgroesse02 =($dimtxt02[2]);
                    ?>
                    PS: Fast vergessen - willkommen hier im Forum

                    Kommentar


                    • #11
                      Zitat von Zergling
                      Übrigens solltest du Zahlen auch wie Zahlen behandeln und nicht in Anführungszeichen setzen, das heißt aus
                      PHP-Code:
                      <?php
                      $Schriftgroesse 
                      '20'
                      // und
                      $phpgroesse02 =($dimtxt02['2']);
                      ?>
                      wird
                      PHP-Code:
                      <?php
                      $Schriftgroesse 
                      20
                      // und
                      $phpgroesse02 =($dimtxt02[2]);
                      ?>
                      Und bei der Gelegenheit können auch Klammern wegfallen, die vollkommen sinnlos sind. Ein einzelner Ausdruck braucht keine Klammer.


                      Was das Verwenden von Zeichenketten statt Zahlen betrifft, so kann ich Zergling nur vollkommen zustimmen.
                      Zahlen sind Zahlen und Zeichenketten sind Zeichenketten.

                      Und 0123 ist etwas ganz anderes als "0123"! Das erste ist eine Zahl mit dem dezimalen Wert 83, das andere eine Zeichenkette, die bei Missbrauch als zahl zum Wert 123 konvertiert wird.

                      Also sollte man sich solchen Unfug schnellstmöglich abgewöhnen.
                      **********************************
                      Nein, ich bin nicht die Signatur.
                      Ich putze hier nur.
                      **********************************

                      Kommentar


                      • #12
                        Hallo

                        Danke für die Tips bin noch recht neu im PHP und lese mir soweit es geht alles aus den Verschiedenen Foren zusammen, da wird es mal so und mal so gemacht.
                        Danke für die Hilfen aber mein Problem besteht immer noch.

                        Der Code ansich läuft ja bei mir auch vorher schon.
                        nur ist es so das ich bei dem Text der in dem Input feld steht rechts immer den gleichen Abstand haben wollte egal wie lang der Text ist.

                        Fehlermeldungen habe ich keine mehr.
                        Code:
                        <html>
                        <head>
                          <title></title>
                        </head>
                        <body>
                        <?php
                        
                        ini_set ('error_reporting', E_ALL);
                        ini_set ('display_errors', TRUE);
                        
                         $Schriftgroesse = 20;
                         $Schrift = 'arial.ttf';
                        
                         $Text01 = 'Rund';
                         $Text02 = 'Wasserball';
                         $Text03 = 'Wasserfall';
                         $Text04 = 'Hirschvogel';
                         $Text05 = 'Bandarmierung';
                        
                                 $dimtxt01 = ImageTTFBBox($Schriftgroesse, 0, $Schrift, $Text01);
                                   $phpgroesse01 = $dimtxt01[2];
                        
                                 $dimtxt02 = ImageTTFBBox($Schriftgroesse, 0, $Schrift, $Text02);
                                   $phpgroesse02 = $dimtxt02[2];
                        
                                 $dimtxt03 = ImageTTFBBox($Schriftgroesse, 0, $Schrift, $Text03);
                                   $phpgroesse03 = $dimtxt03[2];
                        
                                 $dimtxt04 = ImageTTFBBox($Schriftgroesse, 0, $Schrift, $Text04);
                                   $phpgroesse04 = $dimtxt04[2];
                        
                                 $dimtxt05 = ImageTTFBBox($Schriftgroesse, 0, $Schrift, $Text05);
                                   $phpgroesse05 = $dimtxt05[2];
                        ?>
                         <table style="font-family:arial">
                           <tr>
                             <td align="center">
                               <input style="width:<?=$phpgroesse01.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text01?>">
                             </td>
                             <td align="center">
                               <input style="width:<?=$phpgroesse02.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text02?>">
                             </td>
                             <td align="center">
                               <input style="width:<?=$phpgroesse03.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text03?>">
                             </td>
                             <td align="center">
                               <input style="width:<?=$phpgroesse04.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text04?>">
                             </td>
                             <td align="center">
                               <input style="width:<?=$phpgroesse05.'px'?>;font-size:<?=$Schriftgroesse.'px'?>" type="text" value="<?=$Text05?>">
                             </td>
                           </tr>
                         </table>
                        
                         <table>
                           <tr>
                            <td align="center">
                               <input style="width:<?=$phpgroesse01?>">
                            </td>
                            <td align="center">
                               <input style="width:<?=$phpgroesse02?>">
                            </td>
                            <td align="center">
                               <input style="width:<?=$phpgroesse03?>">
                            </td>
                            <td align="center">
                               <input style="width:<?=$phpgroesse04?>">
                            </td>
                            <td align="center">
                               <input style="width:<?=$phpgroesse05?>">
                            </td>
                           </tr>
                         </table>
                        </body>
                        </html>

                        Kommentar


                        • #13
                          Welchen Abstand rechts denn? padding-right?

                          Kommentar


                          • #14
                            Ja das wäre toll wenn das in einem Input weld gehen würde.

                            Leider geht das nicht so wie ich es will.
                            Und wenn ichnicht die genaue länger des Textes weiß bringt das ja auch nichts.

                            Ich glaube es versteht keiner so recht was ich will.

                            Trotzdem Danke

                            Kommentar


                            • #15
                              Das ist richtig, erklär es nochmal, vielleicht an einem Screenshot? Welche Eigenschaft soll ein <input> Feld haben und was hat das ganze mit imagettfbox zu tun? Möchtest du darüber nur die Breite errechnen, die du dann dem <input> Feld zuweisen möchtest?

                              Kommentar

                              Lädt...
                              X