Verzf: Probleme beim setzen eines farbigen Pixels auf ein Bild

Hallo liebe Forumfreunde, ich habe gerade in bisschen mit PHP zu kämpfen, vielleicht könnt ihr mir ja dabei helfen.

Ich möchte ein Bild mit PHP Pixel für Pixel durchgehen und danach ein neues Bild erstellen. Dabei werden die Farbwerte jedes Pixels entsprechend geändert und in das neue Bild an dieselbe Stelle kopiert.
Momentan zum Testen verändere ich die Pixel aber nicht, sondern lese ihre Farben aus und schreibe sie in das neue Bild.

Nun das Problem:
Wenn ich das ganze an einem Pixel ausprobieren, funktioniert es gut. Sobald ich aber mit zwei Schleifen alle Pixel (Reihen und Spalten) durchgehe, funktioniert das ganze nicht mehr, denn dann haben _alle_ Pixel aufeinmal die vor festdefinierte Hintergrundfarbe. Ein rotes Viereck im Bild z.B. ist auf dem neuen Bild plötzlich verschwunden.

Mein Code sieht so aus:

  
  
for ($i = 0; $i < $grafikbreite; $i++)  
{  
 for ($j = 0; $j < $grafikhoehe; $j++) //Für alle Pixel...  
 {  
  //Farbe für den jeweiligen Pixel auslesen  
  $pixel = imagecolorat($grafik, $i, $j);  
  $rgb = imagecolorsforindex($grafik , $pixel);  
  
  //Eine neue definierte Farbe in PHP anlegen, die der Farbe des Pixels gleicht  
  $neueFarbe = ImageColorAllocate($grafik, $rgb['red'], $rgb['green'], $rgb['blue']);  
  
  //In die Grafik die Farbe des Pixels setzen  
  imagesetpixel($grafik, $i, $j, $neueFarbe);  
 }  
}  

Ich vermute, dass das Problem irgendwie damit zusammenhängt, dass ich innerhalb der Schleifen keine neue Farbe definieren kann. Wenn ich nähmlich in der letzten Zeile der Schleife statt $neueFarbe eine $andereFarbe (die ich vorher irgendwo im Quelltext definiert habe) auswähle, geht es mit dieser.

Könnt ihr mir helfen?

  1. Hi,

    Ich möchte ein Bild mit PHP Pixel für Pixel durchgehen und danach ein neues Bild erstellen.

    Und wie genau erzeugst du das neue Bildobjekt?

    Wenn ich das ganze an einem Pixel ausprobieren, funktioniert es gut. Sobald ich aber mit zwei Schleifen alle Pixel (Reihen und Spalten) durchgehe, funktioniert das ganze nicht mehr, denn dann haben _alle_ Pixel aufeinmal die vor festdefinierte Hintergrundfarbe.

    Laut Nutzerkommentaren im Manual zeigt die Funktion dieses Verhalten bspw. dann, wenn die verfuegbare Anzahl an Farbwerten fuer den Imagetyp ausgereizt ist - also bspw. 256 Farben bei GIF.

    MfG ChrisB