Dieter: Farben innerhalb eines Bildes austauschen -> Farbwerte ?

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

  1. 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 über imagecolorat die Farbe des jeweiligen Pixels auslese und diese dann über imagesetpixel 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

    --
    Alle Tage sind gleich lang. Aber unterschiedlich breit.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(