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...
folgender Aufruf:
mfg, ÜM!T
<?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!
Allerdings ist es sehr langsam! Ich würde mich freuen, wenn jemand eine schnellere Lösung hätte!
mfg, ÜM!T
//--> 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

