Dlaczego rozmiar obrazu i pamięć wymagana do wyświetlenia jest inna?

-1

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?

Zamiatarka
źródło
A gdzie widzisz, że jego rozmiar wynosi około stu kB?
Uruchom CMD
W oknie właściwości
Zamiatacz
Masz na myśli dysk?
Uruchom CMD
Faktem jest, że cytowana przez ciebie odpowiedź zawiera złą rekomendację. RGB888 to pierwszy wybór, jeśli nie potrzebujesz przezroczystości, a nie ARGB. Zwłaszcza na urządzeniu mobilnym. Oszczędza 25% pamięci w porównaniu do ARGB, a także, jeśli ustawisz stosy Androida View, dodanie przezroczystości spowolni rzeczy.
Uruchom CMD

Odpowiedzi:

3

IrfanView może pomóc szybko wyświetlić zużytą pamięć:
(patrz obliczenie pamięci)

wprowadź opis zdjęcia tutaj

SZEROKOŚĆ x WYSOKOŚĆ x (BITÓW NA PIKSEL) = pamięć potrzebna do załadowania pełnego obrazu

Twoje zdrowie!

Ben
źródło
2

Twój obraz jest skompresowany (np. Przy pomocy jpeglub png). Jeśli przechowujesz obraz w nieskompresowanym formacie ( tiffbez zipkompresji), dostaniesz ten rozmiar również na dysk.

Germar
źródło
Q pyta, jak to się dzieje.
Uruchom CMD
1
@ClassStacker Wiem. I moja odpowiedź brzmiwith compression
Germar
Tak ... JPEG / JPG i PNG stosują metody kompresji stratnej
pun
1
@ The_IT_Guy_You_Don__ike Jak PNG używa metod kompresji stratnej? Kto powiedział ci te bzdury?
Uruchom CMD
@ The_IT_Guy_You_Don't_Like jpeg używa stratnej kompresji. PNG jest bezstratny
Germar
2

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.

David Schwartz
źródło
Chcesz zapisać kwadrat o wymiarach 80 x 80, wystarczy, że zapiszesz jeden piksel zieleni i jakieś metadane, które mówią, że to 80 x 80?
Sweeper
@Sweeper Może to zrobić, aby go zapisać. Ale nie można tego zrobić, aby go wyświetlić.
David Schwartz