Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP gd-lib stellt keine Grafiken dar

Einklappen

Neue Werbung 2019

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

  • PHP gd-lib stellt keine Grafiken dar

    Hallo!

    Bin gerade am Verzweifeln. Ich bekomme es einach nicht hin, dass mir irgendwas über das gd-lib Module auf der Webseite dargestellt wird

    Code:
    <html>
    <head>
    <title>test</title>
    </head>
    <body>
       <img src="test.php" />
    </body>
    </html>
    Code:
      <?php
      
           header("Content-Type: image/png");
           $img = imagecreatetruecolor(300, 300);
           $white = imagecolorallocate($img, 255, 255, 255);
           imagestring($img, 5, 103, 140, "Hallo Welt!",$white);
           imagepng($img);
      ?>
    Sind ja nur ganz einfache Beispiele, aber es geht einfach nicht. "gd" ist nach phpinfo() und gd_info() aktiviert.

    Jemand ne Idee?

    Danke

  • #2
    Hi Reen_sc,
    bekommst du irgendwelche Fehlermeldungen? Was wird angezeigt, wenn du das Bild/Script direkt aufrufst?
    Eventuell mal den PNG-Header rausnehmen und ein error_reporting(E_ALL) reinsetzen um die Fehlermeldungen auch wirkklich zu sehen...

    Kommentar


    • #3
      PHP-Code:
      error_reporting(E_ALL);
          
      header ("Content-type: image/png");
          
      $im = @ImageCreate (50100) or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
          
      $background_color ImageColorAllocate ($im255255255);
          
      $text_color ImageColorAllocate ($im2331491);
          
      ImageString ($im155"Ein Test-String"$text_color);
          
      ImagePNG ($im); 

      Kommentar


      • #4
        Also bei "Header" entfernt kommt nur das hier

        [code]
        �PNG  IHDR,,�"�IDATx���ю� @0��/s&�@K��ڙ�B���J ��8;�KJ)�b��+�{7'7����C����n��FY��4RJ�eE�= g'����bT{9*ZG�|��s,E�o�1+�諅;�d��G�mLG���:'iG��L} }�S�u��"9�N8�%�%�� E8�޻���l

        Kommentar


        • #5
          Irgendwas stimmt mit der Anzeige hier im Board nicht....

          Unter den ganzen Krickeln gehts so weiter..

          Ist der Header weiterhin drin, dann zeigt der IE das kleine rote Kreuz an (Bild nicht gefunden). Der Firefox sagt, "Die Grafik XXX kann nicht geladen werden, weil sie Fehler enthält.

          Das alles, wenn ich das Grafik PHP direkt aufrufe. Ein "error_reporting(E_ALL);" zeigt mir leider auch nix an.

          @JEGO: Gleicher Effekt...es passiert einfach nix!

          Kommentar


          • #6
            Vielleicht ein Leerzeichen oder ein UTF-8 BOM vor dem <? in deiner test.php ?
            ist vielleicht display_errors in der php.ini deaktiviert ?

            Kommentar


            • #7
              probier das mal.

              so sollte es gehn. Achtung vor dem <?php keine leerzeichen.

              PHP-Code:
                function gd_version() {
                  static 
              $gd_version_number null;
                  if (
              $gd_version_number === null) {
                      
              ob_start();
                      
              phpinfo(8);
                      
              $module_info ob_get_contents();
                      
              ob_end_clean();
                      if (
              preg_match("/\bgd\s+version\b[^\d\n\r]+?([\d\.]+)/i",
                              
              $module_info,$matches)) {
                          
              $gd_version_number $matches[1];
                      } else {
                          
              $gd_version_number 0;
                      }
                  }
                  return 
              $gd_version_number;
              }

              if (
              gd_version() >= 2) {
                  
              $im = @imagecreatetruecolor(12020)
                  or die(
              'Kann keinen neuen GD-Bild-Stream erzeugen');
              } else {
                  
              $im = @ImageCreate (12020)
                    or die (
              "Kann keinen neuen GD-Bild-Stream erzeugen");
              }
              header ('Content-type: image/png');    
              $text_color imagecolorallocate($im2331491);
              imagestring($im155,  'A Simple Text String'$text_color);
              imagepng($im);
              imagedestroy($im); 

              Kommentar


              • #8
                Hat bestimmt mit Leerzeichen zu tun

                Hi

                Habe Deinen Code gerade mal bei mir getestet.
                Läuft prima.

                Insofern kann es also nur mit Leerzeichen vor und soviel ich weiß auch
                nach dem PHP-Code zu tun haben.

                Also, alles vor <?php und hinter ?> raushauen, dann müßte es klappen.

                Gruss

                Kommentar


                • #9
                  Vielen Dank Leute....das mit den Leerzeichen wars!

                  Ist zwar für mich nicht nachvollziehbar, dass hier die Leerzeichen diesen Effekt auslösen....aber naja, muss man wohl so hinnehmen!

                  Kommentar


                  • #10
                    Ein Leerzeichen ist eine Ausgabe. Und es darf vor und auch nach den <?php ?> keine Ausgabe erfolgen.

                    Kommentar


                    • #11
                      Zitat von JEGO Beitrag anzeigen
                      Ein Leerzeichen ist eine Ausgabe. Und es darf vor und auch nach den <?php ?> keine Ausgabe erfolgen.
                      ... wenn ein header modifiziert werden soll mit header(), setcookie(),...

                      @Threadöffner
                      wenn du das statement von agrajag genau(er) gelesen hättest:

                      Zitat von agrajag
                      Hi Reen_sc,
                      bekommst du irgendwelche Fehlermeldungen? Was wird angezeigt, wenn du das Bild/Script direkt aufrufst?
                      Eventuell mal den PNG-Header rausnehmen und ein error_reporting(E_ALL) reinsetzen um die Fehlermeldungen auch wirkklich zu sehen...
                      dann hättest wohl nen "Cannot modify header information - headers already sent" Error bekommen und die Fehlersuche wäre leichter gewesen..

                      nur fürs nächste mal




                      lg
                      Andi

                      Kommentar


                      • #12
                        Ich würde bei Skripten, die etwas anderes als text/* ausgeben, eh den Content-type so spät wie möglich setzen und auch nur, wenn keine Ausgaben statt gefunden haben.
                        PHP-Code:
                        if ( !headers_send() ) {
                          
                        header('Content-type: image/png');
                          
                        imagepng($img);
                        }
                        ?> 

                        Kommentar


                        • #13
                          Hallo zusammen,

                          wenn ich diesen Beitrag noch einmal aufwärmen dürfte.

                          Ich habe fast das gleiche Problem. Ich bekomme anstelle der angezeigten Grafik die Fehlermeldung:

                          Warning: Cannot modify header information - headers already sent by ...

                          Danach wird die Grafik als Zeichen ausgegeben.

                          Wenn ich den Befehl: header("Content-Type: image/png"); an den Anfang des Dokumentes setze ist die Fehlermeldung weg und es wird stattdessen ein Platzhalter der Grafik angezeigt, nicht die Grafik selbst.

                          Wenn ich mit error_reporting(E_ALL) arbeite, wird diese Fehlermeldung ausgegeben:

                          Parse error: parse error, unexpected T_STRING in ... on line 3

                          Zeile 3 ist der Header-Befehl.

                          Wenn ich den Header-Befehl wieder in der Originalzeile belasse, schaut der Fehler so aus:

                          Parse error: parse error, unexpected T_STRING in ... on line 3

                          wobei dann der Befehl so ausschaut:

                          require(dirname(__FILE__)."/init.php");

                          Den Tipp mit den Leerzeichen habe ich auch schon ausprobiert. Keine Änderung. Ich habe schon mit meinem Hoster gesprochen. Er hat auch ettliche Test gemacht mit der GD-Lib. Jetzt hat er erstmal aufgegeben, weil er nichts gefunden hat. Es wäre sehr nett, wenn mir jemand helfen könnte. Wenn noch irgend welche Angaben gebraucht werden, stelle ich sie natürlich zur Verfügung.

                          Vielen Dank

                          Kommentar


                          • #14
                            Warning: Cannot modify header information - headers already sent by ...
                            Die wirklich wichtige Information steht da, wo jetzt nur noch drei Punkte sind.
                            Wie lautet die vollständige Fehlermeldung in der Version des Skript, bei der Dir Warning: Cannot modify header information angezeigt wird?

                            Kommentar


                            • #15
                              Zitat von David Beitrag anzeigen
                              Die wirklich wichtige Information steht da, wo jetzt nur noch drei Punkte sind.
                              Wie lautet die vollständige Fehlermeldung in der Version des Skript, bei der Dir Warning: Cannot modify header information angezeigt wird?
                              Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/svgb.de/web_users/eishockey/lmo/pear/PEAR.php:1061) in /var/www/vhosts/svgb.de/web_users/eishockey/lmo/lmo-paintgraph.php on line 182

                              Kommentar

                              Lädt...
                              X