Jak pracować na BufferedImage z głębią kolorów PNG

Jak pracować na BufferedImage z głębią kolorów PNG
M3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 104
0

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?

airborn
  • 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.

CH
  • 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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.