Bild Erstellen und anzeigen

Prophet05

Erfahrenes Mitglied
Hi,

Ich habe mit PHP ein Bild erstellet aber er will es weder anzeigen noch speichern. Warum? Und wie kann ich das BIld im Browser ausgeben lassen?
Hier ist mein Quelltext:

Code:
<html>
   	<head>
   		<title>Image_Test.php</title>
   	</head>
   	<body>
   		<form action="image.php" method="post">
 		 <p>Breite: <input type="text" size="3" maxlength="3" name="breite" value="200"></p>
 			<p>Höhe: <input type="text" size="3" maxlength="3" name="hoehe" value="200"></p>
   			<p>
   			Hintergrundfarbe: #
 			<input type="text" size="3" maxlength="3" name="bgrot" value="0">
 			<input type="text" size="3" maxlength="3" name="bggruen" value="0">
 			<input type="text" size="3" maxlength="3" name="bgblau" value="0">
   			 (in HexaFarbCode)
   			</p>
   			<p>
   			Rahmenfarbe: #
 			<input type="text" size="3" maxlength="3" name="borderrot" value="255">
 			<input type="text" size="3" maxlength="3" name="bordergruen" value="255">
 			<input type="text" size="3" maxlength="3" name="borderblau" value="255">
   			 (in HexaFarbCode)
   			</p>
 		 <p>Aufschrift: <input type="text" size="20" name="aufschrift" value="Text"></p>
  		 <p><input type="submit" name="submit" value="Erstellen"></p>
   		</form>
   	</body>
   </html>

Code:
<html>
   	<head>
   		<title>Image.php</title>
   	</head>
   	<body>
   		<?php
   			if($_POST['send'])
   			{
  			 $bild = imagecreate($_POST['breite'],$_POST['hoehe']);
   				
 		 	$bgcolor = imagecolorallocate($bild, $_POST['bgrot'], $_POST['bggruen'], $_POST['bgblau']); 
   				imagefill($bild,0,0,$bgcolor);
   				
 		 	$bordercolor = imagecolorallocate($bild, $_POST['borderrot'], $_POST['bordergruen'], $_POST['borderblau']); 
   				
 		 	imagettftext($bild, 10, 0, 10, $_POST['hoehe']/2-imagefontheight(5)/2, $bordercolor, "Verdana.tff", $_POST['aufschrift']);
   				
 				header("Content-Type: image/png"); 
   				imagepng($bild, "bild.png");
   			}
   		?>
   	</body>
   </html>
 
Das Problem ist ja das er es weder SPeichert noch Anzeigt bzw. ich nicht weiß wie ich es anzeigen Lassen sollte. Das würde mir ja schon vollkommen genügen venn es während der Laufzeit im Browser angezeigt wird. Kannn mir jemand erklären wie ich das mache? Scheinbar sind ja soweit ich das verstanden habe keine größeren Fehler in meinem Script.

mfg Prophet05
 
PHP:
if($_POST['send']) {
 $bild = imagecreate($_POST['breite'],$_POST['hoehe']);  				
 $bgcolor = imagecolorallocate($bild, $_POST['bgrot'], $_POST['bggruen'], $_POST['bgblau']); 
 imagefill($bild,0,0,$bgcolor);
 $bordercolor = imagecolorallocate($bild, $_POST['borderrot'], $_POST['bordergruen'], $_POST['borderblau']);
 imagettftext($bild, 10, 0, 10, $_POST['hoehe']/2-imagefontheight(5)/2, $bordercolor, "Verdana.tff", $_POST['aufschrift']);
 header("Content-Type: image/png");
 imagepng($bild, "bild.png");
}
 
Nein, wenn du dem Broweser per header ein Bild ankündigst und dann HTML Code sendest ist das nicht ganz richtig.
 
Wie jetzt soll ich den HTML Körper und alles weblassen? Dann ist die Seite doch falsch oder? Ich verstehe leider nicht ganz wie du das meinst.
:confused:
 
Die Grafik "http://localhost/image.php" kann nicht angezeigt werden, weil sie Fehler enthält.

DIeser fehler erscheint wenn ich die Grafik mit header erstelle. Wenn ich sie ohne Header erstelle kann ich sie zwar speichern aber wenn ich sie ohne Header dem Browser übergebe kommt dabei folgendes heraus:

‰PNG &%§§"$/?( ($$""$=)==)/(=//((=)/=

Also eine komische anhäufung von sonder und Steuerzeichen.

Also warum klappt es nicht

hier ist nochmal der Quelltext (mit Header):
PHP:
	<body>
 		<table>
 			<form action="image.php" method="post">
 			<tr>
 				<td>Breite:</td>
 		    	<td colspan="3"><input type="text" size="3" maxlength="3" name="breite" value="200"></td>
 			</tr>
 			<tr>
 				<td>Höhe:</td>
 		    	<td colspan="3"><input type="text" size="3" maxlength="3" name="hoehe" value="200"></td>
 			</tr>
 			<tr>
 				<td rowspan="2">Hintergrundfarbe:</td>
 				<td>Rot</td>
 				<td>Grün</td>
 				<td>Blau</td>
 			</tr>
 			<tr>
 		    	<td><input type="text" size="3" maxlength="3" name="bgrot" value="0"></td>
 		    	<td><input type="text" size="3" maxlength="3" name="bggruen" value="0"></td>
 		    	<td><input type="text" size="3" maxlength="3" name="bgblau" value="0"></td>
 			</tr>
 			<tr>
 				<td rowspan="2">Rahmenfarbe:</td>
 				<td>Rot</td>
 				<td>Grün</td>
 				<td>Blau</td>
 			</tr>
 			<tr>
 		    	<td><input type="text" size="3" maxlength="3" name="borderrot" value="255"></td>
 		    	<td><input type="text" size="3" maxlength="3" name="bordergruen" value="255"></td>
 		    	<td><input type="text" size="3" maxlength="3" name="borderblau" value="255"></td>
 			</tr>
 			<tr>
 				<td>Aufschrift:</td>
 		    	<td colspan="3"><input type="text" size="20" name="aufschrift" value="Text"></td>
 			</tr>
 			<tr>
 		    	<td colspan="4"><input type="submit" name="send" value="Erstellen"></td>
 			</tr>
 			</form>
 			<tr>
 				<td colspan="4">
 					<?php
 		    		    if($_POST['send'])
 						{
 		    		    	$bild = imagecreate($_POST['breite'],$_POST['hoehe']);
 		    		    	
 		    		    	$bgcolor  = imagecolorallocate($bild, $_POST['bgrot'], $_POST['bggruen'], $_POST['bgblau']); 
 		    		    	imagefill($bild,0,0,$bgcolor);
 		    		    	
 		    		    	$bordercolor  = imagecolorallocate($bild, $_POST['borderrot'], $_POST['bordergruen'], $_POST['borderblau']); 
 		    		    	
 		    		    	imagestring ($bild, 5, 10, ($_POST['hoehe']/2-imagefontheight(5)/2), $_POST['aufschrift'], $bordercolor);
 		    		    	
 		    		    	header("Content-Type: image/png"); 
 		    		    	imagepng ($bild);
 						}
 					?>
 				</td>
 			</tr>
 		</table>
 	</body>
 </html>

mfg Prophet05
 
Zurück