我的应用程序从这里下载了六张图片并循环播放。我以 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,大小为 600px x 550px。(原始 GIF 的大小约为 2/3。)
下载图像后,我的内存使用量约为 80 MB。如果不下载图像,内存使用量约为 50 MB。30 MB 用于存储 6 张图像的内存似乎很大,总大小约为 90 KB。此外,它会将我的帧速率降低到大约 5 或 6,这会在用户缩放或移动我的图像时导致性能问题。(我目前没有显示图像,只是将它们存储在内存中。我用来缩放和移动的图像是一个测试,在我的两次内存测量中都包含在内。)
我还想增加下载图像的大小,但是他们已经使用的内存量使这不合理。