Witam, ten temat jest nawiazaniem do: http://4programmers.net/Forum/Off-Topic/213695-jakim_cudem_obrazek_png_wazy_wiecej_niz_gif. No wiec załozmy ze ładuje obrazek do zmiennej o typie BufferedImage. Ten obrazek jest w formacie PNG wiec zawiera ponad milion kolorów. Teraz zalozmy ze chcialbym odczytac wartosc RGB z pierwszeego piksela. Moge uzyc metody getRGB() i odczytac np. kolor czerwony uzywajac maski bitowej, ale to zwroci mi wartosc z przedzialu 0-255. Jest to okej podczas pracy z obrazami GIF, ale jak odczytac kolor piksela w obrazku PNG ktory ma ich ponad milion?
Jak pracować na BufferedImage z głębią kolorów PNG
- Rejestracja: dni
- Ostatnio: dni
- Postów: 274
0
256 wartości na kanał co daje łącznie ponad 16mln (256^3) kolorów w całej palecie. W przypadku gif'a cała paleta 256 kolorów.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 656
0
Metoda getRGB() zwraca int, a ten możesz podać w konstruktorze klasy Color i wtedy nie musisz się zastanawiać. Dodam jeszcze, że po wczytaniu do BufferedImage obrazek przestaje być GIF, PNG czy inny, bo to tylko format zapisu. BufferedImage ma jeszcze określony typ i może korzystać z mapy kolorów, ale nie ma to wpływu na metodę getRGB. Natomiast indeksowanie kolorów ma wpływ, jeżeli chciałbyś pracować na buforze danych obrazka.