如何减少ImageList的内存使用量

时间:2011-10-06 14:51:57

标签: c# .net image graphics gdi+

我使用以下代码从文件中获取图像,通过添加文件夹中的所有文件创建图像列表,最后将其链接到listview控件以显示缩略图。问题是,如果我添加300个图像,该程序使用超过700MB的内存。图像列表占用大量内存。我有什么方法可以在运行时压缩/重新缩放图像以减少内存使用量,或者有其他选择。

                        this.t.Images.Add(Image.FromFile(f));
                        Filelist.Items.Add(f.ToString());
                        ListViewItem item = new ListViewItem();
                        this.listview.Items.Add(item);

1 个答案:

答案 0 :(得分:4)

将图像加载到临时图像中,将其调整为新图像,然后将调整后的图像保存在列表中。

using (var tempImage = Image.FromFile(f))
{
    Bitmap bmp = new Bitmap(thumbnailWidth, thumbnailHeight);
    using (Graphics g = Graphics.FromImage(bmp))
    {
        g.DrawImage(tempImage, new Rectangle(0, 0, bmp.Width, bmp.Height);
    }
    t.Images.Add(bmp);
}