Dawno nie pisałem tu tematu.
Tak więc mam obraz BufferedImage wczytany z pliku:
BufferedImage image = ImageIO.read(MojaKlasa.class.getResourceAsStream("/ścieżka/do/pliku/obraz.bmp"));
Jest to obraz dość duży, o wymiarach ~5600x2400 pikseli. Znajduje się na nim mnóstwo różnych kształtów o różnych kolorach. Część z nich powinna zostać przemalowana na kolor niebieski, część na zielony. Mam listę, które kolory (w formacie RGB) mają zmienić się na kolor niebieski, a które na zielony. Łącznie na obrazie użytych jest ponad 2000 różnych kolorów RGB.
Ilość koniecznych do sprawdzenia kombinacji oraz ilość pikseli sprawia, że zabawa w rodzaju "pobierz kolor piksela, sprawdź, zmień kolor piksela) nie wchodzi w rachubę: w ciągu sekundy zdąża przekształcić w ten sposób około 2500 pikseli, a półtorej godziny oczekiwania na taką rzecz to coś idiotycznego, zwłaszcza biorąc pod uwagę to, że dość często może pojawiać się konieczność zaktualizowania tego obrazu.
Znalazłem na SO oraz kilku innych stronach poradę wykorzystania ColorModel
w celu zamiany wszystkich pikseli danego koloru na inny kolor, lecz nie mam bladego pojęcia, w jaki sposób to zrobić. Kompletnie nie rozumiem przykładów i zwracam się do was o pomoc z wyjaśnieniem, jak wykorzystać tą klasę do zamiany koloru. A może znacie jakiś lepszy/wydajniejszy sposób?