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 überimagecoloratdie Farbe des jeweiligen Pixels auslese und diese dann überimagesetpixelneu 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
imagecolorallocatemeine 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