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?


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!


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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.