2016-03-12 72 views
2

我正在嘗試計算圖像對應用程序的內存使用影響。我從字節數組加載內存中的圖像,我注意到內存使用量與圖像大小不成正比。圖像對應用程序內存使用的影響

我有96389個字節,我轉換爲圖像在以下幾個方面的字節數組:

var actualImage = (Bitmap)((new ImageConverter()).ConvertFrom(bytes)); 
var actualImage = Image.FromStream(new System.IO.MemoryStream(bytes)); 

我希望應用程序的內存使用量相等的量,但在現實中發生的事情是增加應用程序的內存增加了17324千字節。

爲什麼會發生這種情況,我如何避免使用太多的內存?

+0

http://stackoverflow.com/questions/34656453/how-to-store-image-in-memory-more-compact-than-usual-bitmap-instance-and-access – CodeCaster

回答

0

它只是意味着您的原始圖片被壓縮。在未壓縮的位圖表示中,圖像每像素使用4個字節(每個通道紅色/綠色/藍色一個,alpha通道一個)。

如何避免使用太多內存?

這取決於你想要做什麼。降低圖像分辨率,僅加載圖像的一部分等等......但是,如果您需要以原始分辨率顯示完整圖像,則無法減少使用的內存量。

+0

我想我從來沒有想過那個,我的意思是壓縮圖像。謝謝你的像素說明。這實際上是有意義的,因爲圖像大小是2083 x 2083 = 4338889像素* 4字節/像素= 17355556字節/ 1000 = 17355 Kb大約這是我在應用程序中看到的內存增加。感謝你和@usr的幫助。 – Theodore

1

可能存儲在bytes中的圖像被壓縮。圖像沒有壓縮在Bitmap類的內存中。沒有什麼可以做的,如果你想使用像素。

+0

磁盤上映像的大小與字節數組大致相同。我不認爲圖像是壓縮的,除非磁盤上的圖像也被壓縮。 – Theodore

+0

是的,他們很可能被壓縮。爲什麼這讓你感到驚訝?大多數圖像被壓縮。這不浪費。 – usr

相關問題