如何减少ImageList的内存使用

本文关键字:内存 何减少 ImageList | 更新日期: 2023-09-27 18:10:31

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

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

如何减少ImageList的内存使用

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

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);
}