Cryoxx: Dynamische Grafiken mit PHP erstellen schlägt fehl

Guten Tag,

Ich habe heute eine function geschrieben, diese soll bei ihrem einsatz
ein PNG erstellen, Scripte sind am Ende des postes, jedoch wird nur unverständliches gebrabbel geschrieben

Hier der Fehler

Der Text soll aus einer Variablen kommen, siehe script, jedoch wie ihr oben seht funktioniert das nicht

Bitte um Hilfe.

MfG
Cryoxx

hier die Scripts

Die function:

function drawpng($text) {  
  
$image = imagecreate ( 30, 290 );  
  
$farbe_body = imagecolorallocate ( $image, 243, 243, 243 );  
  
$farbe_b = imagecolorallocate ( $image, 10, 36, 106 );  
  
imagestringup ( $image, 5,5,280, '$text', $farbe_b);  
  
imagepng ( $image );  
  
}

Das Ausführende Script

        while (!$DBartikel->readeof()){  
        $artbez = $DBartikel->row("Bez");  
        echo "<td class=\"degree90\">";  
            drawpng($artbez);  
        echo "</td>"; 
  1. Sry for Doppelpost

    Hier der Fehler

    http://img407.imageshack.us/img407/782/fehlerf.png

    das ist der korrekte link

  2. Hallo,

    da fehlt noch die korrekte Header-Anweisung (Content-type).

    Grüße Basti

    1. Danke für den Tipp Basti,

      jedoch

      da fehlt noch die korrekte Header-Anweisung (Content-type).

      definiere ich schon weiter oben mit einer myheader funktion den header undzwar mit dieser function

      function myheader ($titel) {  
         echo " <div class=\"DIVpaper\" align = \"center\">\n";  
         echo " <font size=+2><b>" . $titel . "</b></font><br/><br/>\n";  
         echo " <hr/>";  
         if ($_SESSION["kundenID"] > 0) {  
          createdropdown();  
         }  
      }
      

      und da das png erst viel später im script gezeichnet werden soll funktioniert das ganze nicht.

      1. Hallo,

        da fehlt noch die korrekte Header-Anweisung (Content-type).
        definiere ich schon weiter oben mit einer myheader funktion den header undzwar mit dieser function

        function myheader ($titel) {

        echo " <div class="DIVpaper" align = "center">\n";
           echo " <font size=+2><b>" . $titel . "</b></font><br/><br/>\n";
           echo " <hr/>";
           if ($_SESSION["kundenID"] > 0) {
            createdropdown();
           }
        }

          
        das ist Quark. Dieser Code hat nichts mit der Erzeugung einer PNG-Grafik zu tun. Und einen HTTP-Header sendet er auch nicht.  
          
        
        > und da das png erst viel später im script gezeichnet werden soll funktioniert das ganze nicht.  
          
        Sag jetzt bitte nicht, du versuchst HTML und Grafikdaten in \*einer\* Ressource zu mischen!?  
          
        So long,  
         Martin  
        
        -- 
        [Ich bin 30](http://community.de.selfhtml.org/zitatesammlung/zitat318). Ich demensiere apokalyptisch.  
          (Orlando)  
        
        
      2. definiere ich schon weiter oben mit einer myheader funktion den header undzwar mit dieser function

        Das ist für deine HTML Datei, hier geht es jedoch um Bilder.
        Du kannst keine Bilder direkt in eine HTML Ausgabe schreiben, du benötigst ein IMG-Tag welches auf eine Datei zeigt.

        z.b.
        <img src='drawpng.php?text=$artbez'>

        in dieser führst du dann dein PHP Code aus deiner Funktion aus. Aber vergiss den Content-Header nicht:
        header("Content-Type: image/png");

        Infos hier:
        http://de3.php.net/manual/de/function.imagepng.php

  3. Hallo,

    Ich habe heute eine function geschrieben, diese soll bei ihrem einsatz
    ein PNG erstellen [...] jedoch wird nur unverständliches gebrabbel geschrieben

    Hier der Fehler

    Du meintest wohl:

    Wenn du schon ein Bild verlinken willst, dann verlinke auch wirklich das Bild, und nicht das HTML-Dokument drumherum.
    Außerdem ist das zu 0% hilfreich für die Problemlösung, denn das ist ein technisch einwandfreies PNG. Wenn du das fehlerhafte Bild direkt verlinkt hättest, könnte man gezielter helfen.

    function drawpng($text) {

    $image = imagecreate ( 30, 290 );

    $farbe_body = imagecolorallocate ( $image, 243, 243, 243 );

    $farbe_b = imagecolorallocate ( $image, 10, 36, 106 );

    imagestringup ( $image, 5,5,280, '$text', $farbe_b);

    imagepng ( $image );

    }

      
    Wie schon erwähnt: Da fehlt der richtige HTTP-Header.  
      
    
    > Das Ausführende Script  
    > ~~~php
    
            while (!$DBartikel->readeof()){  
    
    >         $artbez = $DBartikel->row("Bez");  
    >         echo "<td class=\"degree90\">";  
    >             drawpng($artbez);  
    >         echo "</td>"; 
    
    

    NEIN! NEIN! NEIN!
    Du kannst nicht mitten in einem HTML-Dokument plötzlich anfangen, Bilddaten zu erzeugen! Wie ein Bild in ein Dokument eingebunden wird, ist HTML-Grundwissen.

    So long,
     Martin

    --
    Schildkröten können mehr über den Weg berichten als Hasen.
  4. Hello,

    Ich habe heute eine function geschrieben, diese soll bei ihrem einsatz
    ein PNG erstellen, Scripte sind am Ende des postes, jedoch wird nur unverständliches gebrabbel geschrieben

    Sie erstellt auch die Daten einer PNG-Grafik, sofern sie das kann.
    Aber Du sendest diese dann vermutlich, ohne den passenden Header vorauszusenden. Stattdessen scheinst Du z.B. andere Zeichen voraus zu senden, vielleicht auch, ohne es zu merken.

    Der Browser "denkt" dann: 'ah, da kommt unstrukturierter Text. Den stellste jetzt mal dar'.

    Universelle Funktionen sollten möglichst nicht die Standardausgabe direkt bedienen, sondern nur einen Rückgabewert erzeugen, der dann nach Belieben weiterverarbeitet werden kann.

    Die function:

    function drawpng($text)
      {

    $image = imagecreate ( 30, 290 );
    $farbe_body = imagecolorallocate ( $image, 243, 243, 243 );
    $farbe_b = imagecolorallocate ( $image, 10, 36, 106 );
    imagestringup ( $image, 5,5,280, '$text', $farbe_b);
    imagepng ( $image );

    ^^ Hier steckt der Denkfehler. Du lässt das Image direkt auf die

    ##    Standardausgabe schreiben, anstatt es z.B. erst in eine Datei zu schreiben
    ##    oder aber einen passenden Header vorweg zu setzen.

    }

      
      
      
    Liebe Grüße aus dem schönen Oberharz  
      
      
    Tom vom Berg  
    ![](http://selfhtml.bitworks.de/Virencheck.gif)  
      
    
    -- 
     ☻\_  
    /▌  
    / \ Nur selber lernen macht schlau  
    <http://bergpost.annerschbarrich.de>