Bitmapa 8-bitowa – określenie dokładnej liczby kolorów w palecie

0

W specyfikacji jest napisane ze 8 bitowe BMP zawiera co najwyzej 256 kolorow w tablicy kolorow do ktorej wskazoja poszczegolne pixele. Moje pytanie dotyczy skąd mozna okreslic dokladna ilosc tych kolorow. Chce uzywac malloca do wczytywania do tablicy , wiec potrzebuje wiedziec dokladnie.

0

Jesteś pewien, że "co najmniej"? Jak może być więcej kolorów niż 256 zapisanych na 8 bitach?

0

Co najwyzej. Moj blad.

0
dandon223 napisał(a):

Co najwyzej. Moj blad.

No to alokuj miejsce na 256 kolorów i już.

0

Ale potem uzywam wskazniku do pliku zeby zczytywac poszczegolne bajty do struktor i jak za duzo zczytam do tej tablicy to wskaznik bedzie za daleko i wczyta tez poszczegolne pixele a tego przeciez nie chce.

0

No, ale to gdzieś musi być napisane w nagłówku, albo w DIB, nie? Poczytaj dobrze:
https://en.wikipedia.org/wiki/BMP_file_format

0

Prawdopodobnie znalazlem ale jest to nie jasno napisane i powinni poprawic. Ale ok. A wiesz moze czy te kolory w color table sa jakos posegregowane. Chcialbym naprzyklad uzyc filtru medianowego. To czy wystarczy obliczyc ta mediane dla tablicy wskaznikow do poszczegolnych kolorow, czy trzeba po kolei dla R G i B i potem znalezc odpowiadajacy kolor w tej tablicy?

0

Przecież tam na wiki jest wyraźnie w jednej z tabelek:

the number of colors in the color palette, or 0 to default to 2n

0

Ok. A jak to bedzie dla 16 bitowej i z filterm medianowym? Tez musze na RGB rozdzielic i dopiero w tedy zastosowac ten filtr?
Jakich operacji musze sie nauczyc aby na przyklad z jednego bajta skopiowac 5 pierwszych bitow i zrobic z tego innego bajta?

0
dandon223 napisał(a):

Jakich operacji musze sie nauczyc aby na przyklad z jednego bajta skopiowac 5 pierwszych bitow i zrobic z tego innego bajta?

Bitowych. W szczególności, pierwszych pięć bitów bajta to:

output = (input & 0xF8) >> 3 /* 0xF8 == 0b1111_1000, ale C nie ma literałów binarnych */

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0