Как уменьшить использование памяти ImageList - PullRequest
1 голос
/ 06 октября 2011

Я использую следующий код, чтобы извлечь изображение из файла, создать список изображений, добавив все файлы из папки и, наконец, связать его с элементом управления списком для отображения миниатюр. Проблема в том, что если я добавлю 300 изображений,Программа использует более 700 МБ памяти. Список изображений занимает много памяти. Есть ли способ сжать / изменить масштаб изображения во время выполнения, чтобы уменьшить использование памяти, или есть какая-либо альтернатива.

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

1 Ответ

4 голосов
/ 06 октября 2011

Загрузите изображение во временное хранилище, измените его размер на новое изображение, а затем сохраните измененное изображение в списке.

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