string to image geht net.....hm

SirToby

Erfahrenes Mitglied
Wenn ich mittels folgenden Befehls einen String zu einem Bild machen will, bekomme ich nur Müll zurück:

Befehl:
PHP:
<meta http-equiv="Content-type" content="image/png">
.
.
.
$string = $gb_email_out_db;                                              
      $font = 4;
      $width = ImageFontWidth($font) * strlen($string);
      $height = ImageFontHeight($font);

      $im = imagecreatetruecolor($width,$height);
      $background_color = imagecolorallocate ($im, 48, 46, 107); //#302E6B ALS HINTERGRUND
      $text_color = imagecolorallocate ($im, 209, 10,15);//ROTER TEXT
      imagestring($im, $font, 0, 0,  $string, $text_color);
      imagepng($im);


Müll:
Code:
‰PNG  IHDRxR¡,²*IDATxœíWAƒ0¤O^|Jÿÿ ŸâÅsÌ8 ˜4?6;4²n#ÀÄÄÄD ìëæ±ñ˜Ùa£ªñ¬Ú0fŸ¹ ¯óÈ9v¾n¯óÀk Ö’B'ÐooPe¨åÔØ X &%çQJ³Çq#Â%–m ª2?¥1a¬$‡ê+Çt££´Íi¤‹?wì?Ž¬3wÍ0®Ú küÁ¡ow œ¦†¿N=‰#—èZ!Và ¶ØÓ¹£…§cÚñGõSÙOr?ü+B‡Ö‹f?-aŽ‰÷” ÚhèèwµIq_à_£U*…âÜ<“Ñ4Ä‹ÍFU.R²ûa•ÿbç‹÷Púp³*Ó|5{ ´Ç)m]†K4©ýˆêö³ˆž"ºâs?,ŽÇh}ñ=%üþÔùº-îýIEND®B`‚


Komisch irgendwie - habe ich doch nach einem Tutorial auf diesen Seiten und diversen anderen Tutorials gearbeitet. :(
 
*hmpf* - Geht auch net.

Meine Datei:
PHP:
<html>
<head>
<title>e-mail Versand</title>
<meta http-equiv="Content-type" content="image/png">
<link href="../templates/css/default.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#302E6B">
<?php
include ("../templates/code/functions.php");
//EMAIL-ADRESSE ENTSCHLUESSELN --->> SENDEN!
if ($ueb == "mailen") {
  mysql_server_connect();
    $query_email = mysql_query("SELECT * FROM guestbook WHERE gb_id=$mail_id");
    while ($row_mail = mysql_fetch_array($query_email)) { 
      $gb_email_out_db = str_replace('//bei//', '@', $row_mail['gb_email']);
      
     /* $gb_email_pic = ImageCreate(120,30);
      $bg_color = ImageColorAllocate($gb_email_pic, 48, 46, 107);
      $red_color = ImageColorAllocate($gb_email_pic, 209, 10, 15);
      ImageFilledRectangle($gb_email_pic, 0, 0, 120, 30, $bg_color);
      ImageString($gb_email_pic, 4, 1, 1, $gb_email_out_db, $red_color);
      ImagePNG($gb_email_pic);*/
      $string = $gb_email_out_db;                                              
      $font = 4;
      $width = ImageFontWidth($font) * strlen($string);
      $height = ImageFontHeight($font);

      $im = imagecreatetruecolor($width,$height);
      $background_color = imagecolorallocate ($im, 48, 46, 107); //#302E6B ALS HINTERGRUND
      $text_color = imagecolorallocate ($im, 209, 10,15);//ROTER TEXT
      imagestring($im, $font, 0, 0,  $string, $text_color);
      header ("Content-type: image/png");
      imagepng($im);
      
        echo "<form name=neu method=get action=mailto:$gb_email_out_db enctype=multipart/form-data>
              <table width=\"370\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">
                <tr>
                  <td><br/><br/><br/><br/></td>
                </tr>
                <tr>
                  <td align=\"center\" class=\"err_msg\">$gb_email_out_db</td>                        
                </tr>
                <tr>
                  <td><br/><br/></td>
                </tr>
                <tr>
                  <td align=\"center\">
                    <input type=\"submit\" name=\"weiter\" value=\"&nbsp;&nbsp;An diese e-mail senden...&nbsp;&nbsp;\" class=\"normal_10\" style=\"border: 1px solid #FFFFFF; background-color: #7C84D0\"></input>
                  </td>
                </tr>
              </table>        
            </form>";
    }
  mysql_close();        
}
?>
</body>
</html>

Ich bekomme dann zurück in dem Fenster:
Code:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/htdocs/fsc-gr.de/includes/gb_send_mail.php:8) in /home/www/htdocs/fsc-gr.de/includes/gb_send_mail.php on line 32
‰PNG  IHDRxR¡,²*IDATxœíWAƒ0¤O^|Jÿÿ ŸâÅsÌ8 ˜4?6;4²n#ÀÄÄÄD ìëæ±ñ˜Ùa£ªñ¬Ú0fŸ¹ ¯óÈ9v¾n¯óÀk Ö’B'ÐooPe¨åÔØ X &%çQJ³Çq#Â%–m ª2?¥1a¬$‡ê+Çt££´Íi¤‹?wì?Ž¬3wÍ0®Ú küÁ¡ow œ¦†¿N=‰#—èZ!Và ¶ØÓ¹£…§cÚñGõSÙOr?ü+B‡Ö‹f?-aŽ‰÷” ÚhèèwµIq_à_£U*…âÜ<“Ñ4Ä‹ÍFU.R²ûa•ÿbç‹÷Púp³*Ó|5{ ´Ç)m]†K4©ýˆêö³ˆž"ºâs?,ŽÇh}ñ=%üþÔùº-îýIEND®B`‚

Was soll das? Versteh ich net mehr :(
 
Das geht so nicht. ImagePNG gibt das Bild an den Browser zurück. Da Du aber bereits HTML-Tags ausgegeben hast, denkt der Browser, dass die Bilddaten HTML sind und gibt dieses Grützelmützel wieder. Ausserdem kann durch die vorzeitige HTML-Ausgebe die Header-Funktion nicht ausgeführt werden, weil die HTML-Header schon gesendet wurden.

Du musst die Erstellung des Bildes in ein extra Script auslagern. Durch das Script wird nur das Bild zurückgegeben (ImagePNG) und zuvor der Header modifiziert (wie bereits gepostet). Das Bild könntest Du dann über
Code:
<img src="script.php">
abrufen.

snuu
 
Ich weiß zwar nicht genau, was du damit vor hast, aber du solltest besser diese Methode anwenden:
irgendwo auf deiner Seite, wo das Bild angezeigt werden soll, schreibst du ein
Code:
<img src="deine_php_bilddatei.php" border="0" />
hin.

Das Script 'deine_php_bilddatei.php' ist dann nur noch für das Erstellen des PNGs verantwortlich (darin dürfen sich dann kein HTML-COde oder sonstige Ausgaben befinden). Es wird von deiner eigentlichen Seite aufgerufen (durch den Verweis im IMG-Tag) und gibt das Bild zurück (durch imagepng und die header-FUnktion, die snuu bereits erwähnt hat).
 
Zurück