Ładowanie i wyświetlanie dużej ilości obrazków

0

Witam,
Piszę właśnie przeglądarkę grafiki i chciałbym żeby po wskazaniu folderu program wyświetlił miniaturki zdjęć z tego folderu. Napisałem sobie prototyp takiego programiku i pojawił się problem. Otóż gdy chcę wyświetlić miniatury około 500 zdjęć to wyświetla się błąd o przekroczeniu pamięci bo wszystkie zdjęcia są tam ładowane. Moje pytanie brzmi jak wyświetlić w C# dużą ilość zdjęć. Korzystam z Visual c# 2008.

Oto fragment kodu ładujący obrazki (kod jest całkowicie prototypowy i zdaję sobie sprawę z pewnych braków i niedoróbek jak na przykład ten catch :P):

path = folderBrowserDialog1.SelectedPath;


ImageList imageList1 = new ImageList();
imageList1.ImageSize = new Size(256, 256);
imageList1.ColorDepth = ColorDepth.Depth24Bit;
string[] iconFiles = Directory.GetFiles(path, "*.jpg");

foreach (string iconFile in iconFiles)
{
   try
   {
      imageList1.Images.Add(Image.FromFile(iconFile));
   }
   catch
   {
         MessageBox("Error","");
   }
}

this.listView1.View = View.LargeIcon;
this.listView1.LargeImageList = imageList1;

for (int j = 0; j < imageList1.Images.Count; j++)
{
    ListViewItem item = new ListViewItem();

    item.ImageIndex = j;    
    this.listView1.Items.Add(item);               
}
0

500 zdjęć, każde np. 3MPx, 3 bajty na piksel to jakieś 4,5GB. Dziwisz się?

Wczytaj jeden obrazek, zmniejsz go, dodaj do listy, wywołaj GC, zrób to samo z następnym.

0

Działa wyśmienicie :) Dzięki.

0

możesz podać fragment kodu z użyciem GC
bo mam ten sam problem

0

GC.Collect();

i po sprawie....

1 użytkowników online, w tym zalogowanych: 0, gości: 1