Farben innerhalb eines Bildes austauschen -> Farbwerte ?
Dieter
- php
Hallo,
ich möchte eine Farbe innerhalb eines Bildes per PHP gegen eine andere Farbe austauschen.
Soweit ich weiß, kann ich dieses (leider) nur Pixel by Pixel indem ich über imagecolorat
die Farbe des jeweiligen Pixels auslese und diese dann über imagesetpixel
neu setzte.
Soweit, sogut (es sei denn jemand hat eine bessere Alternative als diese "Pixellösung").
Jetzt möchten ja aber (lt. der Doku) die Funktionen die Farbwerte in Dezimal haben, mir liegen diese aber ausschließlich in HEX bzw. RGB vor.
Ist es korrekt, das ich also jetzt erst das Bild einlesen müsste, dann über imagecolorallocate
meine beiden Farben (die zu ersetzende und die neue) bestimme und dann die Ersetzungen starte ?
Sorry das ich so Frage, aber ich habe genau dieses versucht so umzusetzten, aber leider funktioniert dieses bei mir nicht.
Gruss
Dieter
Hi,
ich möchte eine Farbe innerhalb eines Bildes per PHP gegen eine andere Farbe austauschen.
Soweit ich weiß, kann ich dieses (leider) nur Pixel by Pixel indem ich überimagecolorat
die Farbe des jeweiligen Pixels auslese und diese dann überimagesetpixel
neu setzte.
nein, bei palettenbasierten Bildformaten (GIF oder 8bit-PNG) kannst du auch die Paletteneinträge direkt bearbeiten:
http://de3.php.net/manual/en/function.imagecolorsforindex.php
http://de3.php.net/manual/en/function.imagecolorset.php
Jetzt möchten ja aber (lt. der Doku) die Funktionen die Farbwerte in Dezimal haben, mir liegen diese aber ausschließlich in HEX bzw. RGB vor.
Nein. Dezimal oder Hex ist eine Frage der *Darstellung* eines Zahlenwerts, nicht seiner Speicherung oder internen Übergabe.
Ist es korrekt, das ich also jetzt erst das Bild einlesen müsste, dann über
imagecolorallocate
meine beiden Farben (die zu ersetzende und die neue) bestimme und dann die Ersetzungen starte ?
Die entscheidende Frage ist zunächst mal: Hast du ein palettenbasiertes Bild? Wenn ja, kannst du einfach die Paletteneinträge manipulieren. Wenn nein, wirst du wohl oder übel jedes Pixel einzeln ansprechen müssen.
Ciao,
Martin