Na podstawie informacji o przepełnieniu stosu dowiedziałem się, że pamięć wymagana do wyświetlenia obrazu jest równa
4 * image dimensions
Mam około 800 x 800 obrazów i widzę, że jego rozmiar to około stu KB, co moim zdaniem jest dość małe. Ale zgodnie z powyższym wzorem potrzeba więcej niż 2 MB, aby go wyświetlić!
W poście SO jest napisane, że ponieważ mapa bitowa używa kolorów ARGB, każdy piksel wymaga 4 bajtów przestrzeni dyskowej. Dlatego właśnie formuła zawiera 4 * wymiary obrazu. Widzę jednak, że do przechowywania obrazu potrzeba tylko 100 KB!
Czy komputer używa innej metody przechowywania obrazu? Czy 1 piksel nadal wymaga przechowywania 4B? Jak to się dzieje?
memory
memory-usage
Zamiatarka
źródło
źródło
View
, dodanie przezroczystości spowolni rzeczy.Odpowiedzi:
IrfanView może pomóc szybko wyświetlić zużytą pamięć:
(patrz obliczenie pamięci)
SZEROKOŚĆ x WYSOKOŚĆ x (BITÓW NA PIKSEL) = pamięć potrzebna do załadowania pełnego obrazu
Twoje zdrowie!
źródło
Twój obraz jest skompresowany (np. Przy pomocy
jpeg
lubpng
). Jeśli przechowujesz obraz w nieskompresowanym formacie (tiff
bezzip
kompresji), dostaniesz ten rozmiar również na dysk.źródło
with compression
Pamięć wymagana do przechowywania obrazu może być mniejsza niż pamięć wymagana do jego wyświetlenia. Na przykład, jeśli obraz jest zielonym prostokątem o wymiarach 80 x 80, możesz go zapisać jako odpowiednik „zielonego prostokąta 80 na 80”. Aby go wyświetlić, potrzebujesz 1600 zielonych kropek, z których każda zajmuje trochę miejsca.
źródło