Anzahl der verwendeten Farben eines (Buffered)Image bestimmen?

lui7172

Mitglied
Hallo,

erst mal Danke für Eure Mühen und Sorry, dass ich mich so lange nicht gemeldet habe. Ich bin zu einer anderen Baustelle abgezogen worden.

Die bisherige Methode habe ich noch mal mit dem Hashset implementiert und ein wenig "rumgespielt". Das HashSet ist fast doppelt so langsam wie die ArrayList beim hinzufügen von Elementen. Bei einer Mio. Elementen 453 ms zu 250 ms. Jedoch enthält das HashSet automatisch keine Dopplungen, und genau das muss bei der ArrayList teuer über eine indexOf/contains erkauft werden. Bei nur 50 Elementen in der Liste dauert der Vorgang
if (! al.contains(j))
al.add(j);
bei einer Mio. Durchläufen schon drei mal so lange wie dass einfache add() des HashSets.

Das bedeutet für meinen konkreten Anwendungsfall, dass ich mit dem HashSet bei z.B. S/W-Bildern etwas Zeit gegen die ArrayList verliere. Jedoch bei großen Bildern mit vielen Farben SEHR viel Zeit gewinne. Nun könnte ich beide Methoden implementieren und entsprechend der Bildwerte nutzen. Lohnt aber in meinen Augen nicht. Was sich hingegen lohnt ist die Berechnung der Obergrenze der Farben und dem Abbruch der Zählerrei, wenn dieser Wert erreicht wurde. Bei einem S/W-Bild kann dies bereits nach zwei Pixeln sein.

Nochmals Danke
lui