Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Bild von Datei laden, Farben austauschen, und ausgeben





Frage

Wie kann ich per PHP ein bild laden, zum Beispiel die farbe rot durch blau ersetzen und dann anzeigen? Kann dann der Aufruf folgendermaßen erfolgen: <img src="zeigebild?bild=dateiname.jpg"> mfg, ÜM!T

Antwort 1 von misterUE

Also Anzeigen des Bildes hab ich schon mal, fehlt nur noch das Vertauschen der farben...

<?PHP
  $image = imagecreatefromjpeg($bildurl);
  imagejpeg($image);
?>


folgender Aufruf:

<img src="zeigebild.php?bildurl=dateiname.jpg">


mfg, ÜM!T

Antwort 2 von misterUE

Für alle, die es interessiert, hab es!

//-->	array rgb(int im, int x, int y)
//-->	Beispiel: $rgb = rgb ($bild, $px, $py);
//-->	$rgb[0] ist rot, $rgb[1] ist grün, $rgb[2] ist blau!
function rgb($bild, $x, $y){
  $farbindex = imagecolorat($bild, $x, $y);
  $rgbwert = imagecolorsforindex($bild, $farbindex);
  $farben = array($rgbwert["red"], $rgbwert["green"], $rgbwert["blue"]);
  return $farben;
}

//-->	void farbtausch(int im, array alt, array neu)
//-->	Beispiel: farbtausch ($bild, array(255, 255, 0), array(255, 0, 0));
//-->	Hier wird gelb durch rot ausgetauscht!
function farbtausch($bild, $alt, $neu){
  if ($alt != $neu){
    $neuefarbe = imagecolorallocate($bild, $neu[0], $neu[1], $neu[2]);
    $bildbreite = imagesx($bild);
    $bildhoehe = imagesy($bild);
    for ($ix = 0; $ix <= $bildbreite - 1; $ix++){
      for ($iy = 0; $iy <= $bildhoehe - 1; $iy++){
        if(rgb($bild, $ix, $iy) == $alt){
          imagesetpixel ($bild, $ix, $iy, $neuefarbe);
        }
      }
    }
  }
}


Allerdings ist es sehr langsam! Ich würde mich freuen, wenn jemand eine schnellere Lösung hätte!

mfg, ÜM!T

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: