2016-09-23 4 views
-2

Ich bin auf der Suche nach einer Möglichkeit, die Farbe eines PNG programmgesteuert zu ändern. Bislang verwenden alle Lösungen, die ich gesehen habe, getpixel und gehen Pixel für Pixel durch. Eigentlich möchte ich nur die Vordergrundfarbe eines Bildes mit einem transparenten Hintergrund ändern. Ist das möglich? Gibt es eine Art von Palette, wo die Änderung leicht für alle Pixel einer bestimmten Farbe erreicht werden kann?Ändern Sie die Farbe von PNG-Bild

Antwort

1

Ob eine Palette vorhanden ist oder nicht hängt vom PNG-Farbtyp ab. Wenn die color 3 gibt es eine Palette in der PLTE Brocken enthalten ist, und Sie können es programmatisch durch diese Schritte ändern tun:

  1. Extrakt der PLTE chunk
  2. Änderung der Eintrag für die Vordergrundfarbe auf den neuen Hintergrund Farbe
  3. das CRC-Prüfsumme für die PLTE chunk neu berechnen
  4. wieder einsetzt PLTE Brocken in der Bilddatei
  5. fügen Sie einen tRNS Klotz, dass Farbe transparent zu machen.

Wenn color 0 oder 2 ist, dann die Vordergrundfarbe transparent durch Hinzufügen eines tRNS Klotz machen kann, aber wenn man die darunter liegende Farbe der Pixel zu einem neuen Hintergrundfarbe ändern möchten, werden Sie tun müssen es Pixel für Pixel, wie Sie bereits beobachtet haben.

Es ist wirklich nicht notwendig, die Vordergrundfarbe zu ändern, obwohl, wenn Sie es transparent machen, ist es nicht wirklich wichtig, was die RGB-Komponenten enthalten.

Verwandte Themen