2D-Grafik Bild farblich filtern

bene2808

Aktives Mitglied
Hallo Forum,

ich möchte ein BufferedImage sehr häufig hintereinander auf ein Fenster zeichnen. Dabei ist die Originalbilddatei komplett schwarz, hat aber unterschiedliche Transparenzwerte, sodass sie wirkt, als würde sie aus verschiedenen Grautönen bestehen. Beim Zeichnen des Bilds soll nun zwischen diesem Schwarz und einem festgelegten Blauton "interpoliert", aber die Alphawerte beibehalten werden. Am Ende soll das Bild eben anfangs grau erscheinen, und alles was grau war, soll immer mehr ins Blaue übergehen.

Hab zu dem Thema jetzt schon recherchiert wie blöd und leider keine Lösung gefunden. Ich hab's mit einem LookupOp mit eigens programmiertem LookupTable probiert. Allerdings verstehe ich die genaue Funktionsweise nicht ganz. In Anlehnung an meine OpenGL-Erfahrung, wo man mit Blending einfach vorher das Bild als AlphaMap einzeichnen könnte und dann nur ein Rechteck in der gewünschten Farbe an dieselbe Stelle malen müsste, habe ich es mal mit AlphaComposite versucht. Wollte aber auch nicht so recht, zumal ich die verschiedenen Modi sehr verwirrend finde.

Wie also kann man ein Bild performant mit einer bestimmten Farbe filtern, aber eben nicht vorneweg in ein neues Bild, sondern bei jedem Mal Zeichnen neu?

Sorry für mal wieder so viel Text,
danke für alle Antworten! 🙂
 
Ich verstehe ehrlich gesagt nicht was genau du machen willst. Du hast also ein Bild dessen Farbwerte RGB alle 0 sind nur der Alphawert ist unterschiedlich? Nun willst du, dass sich die Farbwerte bei jedem Zeichnen ändern, so dass aus den RGB Werten ein 0,0,255 (z.B. für ein reines Blau) wird und die Transparenz sich nicht ändert?

Wenn ja, wo ist das Problem? Einfach vor jedem Zeichnen eben die Bilddaten ändern und gut ist.

Gruß

Claus
 
Ja genau so war's gemeint. 🙂

Und wie würde man das mit dem "Bilddaten ändern" machen, sodass das viele Male in der Sekunde geht und das Originalbild nicht verloren geht? Also mit setRGB vermutlich nicht oder...? Das frisst doch viel zu viel Leistung...😵
 

Zurück
Oben