imagecreate Problem

Ich versuche in einer while Schleife png´s zu erstellen.
Die include Datei funktioniert ohne die Schleife einwandfrei. In der Schleife bekomme ich statt der Bilder allserdings die folgende Fehlermeldung:
<b>Warning</b>: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\legend\legend.php:28) in <b>c:\apache\htdocs\legend\image.php</b> on line <b>2</b><br />
‰PNG

IHDR

 ·ü]þ PLTE-{BÁqØ
IDATxœc`À  öýé– IEND®B`

Kann mir jemand erklären woran das liegt?
 
Wenn du uns mal deinen Code zeigst, dann können wir dir sagen wo der Fehler liegt...anders kann ich dir zumindest grad nicht sagen wo du nen Fehler genau hast...
 
du kannst nur einmal einen header senden. also das
PHP:
header("Content-type: image/png");
darf nur einmal ausgeführt werden.
aber warum gibst du bilder in einer schleife aus?!? was soll das bewirken??? ich denk auch mal stark, dass das auch einen fehler verursachen würde, da ein bild ja nicht aus 2 oder mehr bestehen kann...
 
Also prinzipiell kann man den selben Header so oft senden wie man will, nur nach der ersten Ausgabe von Daten (also alles was nicht Header ist) darf kein Header mehr folgen (es sei denn man benutzt output buffering, aber das ist eine andere Geschichte).
 
Also der Code sieht so aus:
$field=$row["name_s"];
$abfrageColor="SELECT red, green, blue, text FROM color WHERE name='".$row["name_s"]."'";
$ergebnisColor=mysql_query($abfrageColor);
echo "<div id='Leg",$row["name_s"],"' style='display:none;'>\n";
echo "<table border=0 cellspacing='0'>\n";
while($rowColor=mysql_fetch_array($ergebnisColor))
{
echo "<tr height='",$size_l[1],"'>\n";
echo"<td>";
include("image.php");
echo $ergebnisColor["text"];
echo "\t<td align='center'>\n";
echo "</tr>\n";
}
echo "</table>\n";
echo "</div>\n";

das ganze soll ne Legende für ne Landkarte werden. Die Farbwerte werden aus der db ausgelesen. Im der include Datei werden die Bilder erzeugt:
<?php
header("Content-Type: image/png");
$image = imagecreate(10,10);
$farbe_body=imagecolorallocate($image,$rowColor["red"],$rowColor["green"],$rowColor["blue"]);
imagepng($image);
imagedestroy($image)
?>
 
Da hast du wohl was grundlegend falsch verstanden... du kannst doch keine Bildbinärdaten in deinen HTML-Quelltext packen! Schon mal was von einem img-Tag gehört?
 
Ja mir kam das auch nen bisschen komisch vor. Da ich mich aber erst seit 2-3 Wochen mit php beschäftige bitte ich um Nachsicht. Muss ich die erzeugt Bildatei also auf dem Server speichern oder wie geht das. In den Imagetag muß ja irgend nen Pfad zu einer Datei stehen und nicht das Bild als Binär.
 
Wandle deine image.php folgendermaßen ab:
PHP:
<?php
header("Content-Type: image/png");
$image = imagecreate(10,10);
$farbe_body=imagecolorallocate($image,$_GET["r"],$_GET["g"],$_GET["b"]);
imagepng($image);
imagedestroy($image);
?>
Dann kannst du als URL in den img-Tag z.b. image.php?r=128&g=64&b=16 schreiben :)
 
Zurück