我的應用程序從here下載6張圖像,然後循環播放。我以GIF格式下載圖像,使用.NET Image Tools將它們轉換爲PNG格式,並將每個圖像作爲BitmapImage
存儲在List<BitmapImage>
中。如何減少多個圖像的內存使用量?
我使用所下載的圖像添加到圖像的列表的代碼是:
List<BitmapImage> images = new List<BitmapImage>();
//WebClient used for download
...
GifDecoder decoder = new GifDecoder();
ExtendedImage eim = new ExtendedImage();
decoder.Decode(eim, DOWNLOADEDIMAGESTREAM);
using (MemoryStream ms = new MemoryStream())
{
WriteableBitmap wbmp = eim.ToBitmap();
PngEncoder encoder = new PngEncoder();
encoder.Encode(eim, ms);
ms.Flush();
ms.Position = 0;
BitmapImage bmp = new BitmapImage();
bmp.SetSource(ms);
ms.Close();
images.Add(bmp);
}
e.Result.Dispose();
每個轉換後的圖像是大約10〜20 KB,尺寸爲600像素X 550px。 (原始GIF的大小約爲2/3。)
下載圖像後,我的內存使用量約爲80 MB。在不下載圖像的情況下,內存使用量大約爲50 MB。 30 MB似乎有很多內存可用於存儲六張圖像,總大小約爲90 KB。此外,它會將幀速率降低到5或6,這會在用戶放大或移動圖像時出現性能問題。 (我不是當前顯示的圖像,只需將它們存儲在內存中。我使用縮放和移動是一個測試圖像,並在都我的記憶測量被包括在內。)
我也想增加下載的圖像的大小,但他們已經使用的內存量使得這是不合理的。
感謝您的鏈接。我會看看它是否可以提供任何幫助。 – msbg 2013-04-25 18:20:23
它支持Windows Phone嗎?我沒有看到WP應用程序的任何選項,並且在他們的論壇上有一篇文章說他們不支持它。 – msbg 2013-04-25 18:37:34