Eu aprendi de um post overflow de pilha que a memória necessária para exibir uma imagem e o tamanho da imagem é igual a
4 * image dimensions
Eu tenho algumas imagens 800x800 e vejo que seu tamanho é de cerca de cem KB, o que eu acho que é bem pequeno. Mas de acordo com a fórmula acima, é necessário mais de 2MB para exibi-lo!
O post do SO diz que, como o bitmap está usando cores ARGB, cada pixel requer 4 bytes de espaço de armazenamento. Então é por isso que a fórmula é 4 * dimensões da imagem. Mas vejo que apenas 100 KB de espaço é necessário para armazenar a imagem!
O computador usa um método diferente para armazenar a imagem? 1 pixel ainda precisa de 4B para ser armazenado? Como isso está acontecendo?
memory
memory-usage
Sweeper
fonte
fonte
View
s, adicionando transparência vai desacelerar as coisas.Respostas:
IrfanView pode ajudar a visualizar rapidamente a memória usada:
(veja o cálculo da memória)
LARGURA x ALTURA x (BITS POR PIXEL) = memória necessária para carregar a imagem completa
Felicidades!
fonte
Sua imagem está compactada (por exemplo, com
jpeg
oupng
). Se você armazenasse a imagem em um formato descompactado (tiff
semzip
compressão) você também teria esse tamanho no disco.fonte
with compression
A memória necessária para armazenar uma imagem pode ser menor que a memória necessária para exibi-la. Por exemplo, se a imagem for um retângulo verde de 80 x 80, você poderá armazená-la como o equivalente a "80 por 80 retângulo verde". Mas para exibi-lo, você precisa de 1600 pontos verdes, cada um dos quais ocupará algum espaço.
fonte