Tablica BMP

0

Czesc! Prosze o pomoc w przedstawieniu bitmapy w postaci tablicy wektorow [R,G,B]. Dodam, ze dosc zielony jestem i bardziej szczegolowy opis bylby wskazany.

0

Nie wiem czy to ci cos pomoże, dawno nic nierobilem w pascalu (delphi),wiec nie umieszcze implementacji, ale glowna zasada moze ci sie przyda.
(wszystko opiera sie na bitowych operacjach na plikach).

1.Odczytaj 10=b10,11=b11,12=b12,13=b13 bajt pliku. Obliczasz 2563b13+2562b12+256*b11+b10 = S (S jest numerem bajtu w pliku od ktorego zaczyna sie kodowanie obrazka).

2.To samo dla bajtow 18,19,20,21 (Suma rowna sie szerokosci obrazka w punktach=S2)

3.To samo dla bajtow 34,35,36,37 (Dlugosc obszaru danych)

4.Oblicz N= S2 modulo 4 (ilosc pustych bajtow na koncu kazdego wiersza obrazka)

5.Zaczynasz od bajtu numer S (patrz punkt 1.) Oczytujesz (S2 razy po 3bajty) i (N razy po 1 bajcie) . Te 3 bajty sa wektorem rgb punktu. W lini masz S2 punkty.
Robisz tak z kolejnymi wierszami obrazka, az dojdziesz do konca. Mozesz zrobic licznik odczytanych punktow. Wszystkich punktow jest S2*S3 (S3 wysokosc obrazka {bajty 22,23,24,25}

6 wazne: przy wyswietlaniu obrazka z wektorow rgb pamietaj ze obrazek w pliku bmp jest kodowany od prawego dolnego rogu rzedami wzwyż..

  1. dobrym sposobem jest zrobienie prostego programu ktory wczytuje plik bmp i wypisuje jego parametry tj. szerokosc wysokosc itp.(tak na poczatek)

  2. jesli popelnilem jakis blad to w numerach bajtow (jesli beda zle kolory to zacznij odczytywac bajty od bajtu o 1 wiekszego niz naisalem np. w pkt.1 odczytaj 11,12,13,14 bajt zamiast 10,11,12,13) w kolejnych punktach tak samo. Ale powinno byc ok.

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