2012-03-27 11 views
1

Ich muss eine Farbe mit Weiß auf einem Bild ersetzen. Ich habe über ColorModel und RGBImageFilter.substituteColorModel gelesen, aber ich verstehe nicht sehr gut.JAVA: Ersetzen Sie eine Farbe durch eine andere mit ColorModel

Die Farbe, die ich ersetzen wollen ist: R: 113 G: 75 B: 96

Und natürlich weiß ist 255.255.255.

Wenn Sie eine direkte Lösung geben können, wird groß sein, aber wenn nicht, ein bisschen Erklärung, wie es auch zu tun ist, wird groß. Ich will nicht nur die Lösung, ich möchte das Wie und Warum verstehen.

Vielen Dank.

+0

Scheint wie das gleiche Problem http://stackoverflow.com/q/2369809/422353. – madth3

Antwort

1

In meiner Firma müssen wir diese Art von häufig auf Embedded-Displays wechseln. Wir verwenden indizierte Bitmaps, um das zu erreichen, wovon Sie sprechen. Die Grundidee besteht darin, die Palette für einen bestimmten Index zu wechseln, um ein anderes Aussehen und Gefühl zu erhalten.

Die Idee mit einer indizierten Bitmap ist, dass Sie in der Palette 256 Farben zur Verfügung haben. Sie können jedem gewünschten Bereich in der Palette beliebige RGB-Werte zuweisen. Das Bild selbst ist nur eine Liste von Indizes in der Palette (einzelnes Byte pro Pixel). Das ist auf CPU- und Speicher-Constrained-Plattformen (wo Sie nicht mit der Dekomprimierung von Bildern fertig werden und Sie nicht den Platz für Vollfarben-Bitmaps sparen können) wirklich cool. Sie können alternative Paletten erstellen (Grün, Gelb, Rot usw.). Sie wechseln nur die Palette und die Grafik sieht komplett anders aus. Wir verwenden dies, um sehr feine Verläufe auf Widgets zu erzeugen, die die Farbe wechseln können, ohne jeden Zustand einer Schaltfläche mit sich herumtragen zu müssen.

Um Ihr spezifisches Problem mit indizierten Bitmaps zu lösen, würden Sie nur Paletten wechseln und sicherstellen, dass in einer Palette der Index (113,75,96) war und in der zweiten Palette der gleiche Index (255,255,255).

IndexColorModel ist ein guter Ort, um in AWT zu starten.

Viel Glück!

+0

Eigentlich habe ich darüber gelesen, kann aber die Konzepte nicht erfassen und auf meinen Code anwenden. Ich fand eine ziemlich gute Seite in http://www.webbasedprogramming.com/Tricks-of-the-Java-Programming-Gurus/ch12.htm#ImageFilters, aber ich bin immer noch sehr verwirrt. –

Verwandte Themen