PixelFormat a pamięć

0

Sprawa wygląda tak: mam program, w nim sporą bitmape 6000 na 4000. Jak odpale exeka to jego proces zajmuje ok 4000K, jak odpale ich 10 to wyskakuje mi błąd "not enough storage is available to process this command". Kiedy ustawie do tej bitmapy PixelFormat:=pf4bit to exek zajmuje ok 12000K, jakpf32bit to ok 35000K. Z tym, ze jak zmienie PixelFormat na dowolną wartość nie pojawia sie bład i moge odpalic znacznie wiecej exekow.
Ktoś mi to wyjaśni/naświetli/wytłumaczy?

0

format pixela informuje o tym na ilu bitach zapisywana jest informacja o kolorze jednego pixela.
pixele są kodowane od lewej do prawej z góry na dół w kolejnych bajtach im więcej bitów przeznaczysz tym więcej kolorów możesz zmieścić ale zwiększa się rozmiar bitmapy.
i tak :

1 bit - stany bitów to 1 lub 0 więc masz tylko 2 kolory w palecie ale za to w 1 bajcie mieścisz kolor 8 pixeli .
8 bitów - stany od 00000000 do 11111111 (maximum 256 kolorów )np. skala szarości 1 bajt 1 pixel ;
16 bitów = 65536 kolorów możliwych ale 2 baity = 1 pixel.
24 bity i 32 bity podobnie ...

tak wiec przechowanie bitmapy może być aż 32x bardziej kosztowe pamięciowo.
u Ciebie :

6000 x 4000 = 24 000 000 pixeli = 3 000 000 bajtów przy 1 bitowej bitmapie lub aż
96 000 000 bajtów przy 32 bitach.

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