2012-03-14 137 views
2

我有一個完整的目錄只PNG圖像(580個圖像)。 我用這個功能加載/保存圖像misorder

private List<Bitmap> images = new List<Bitmap>(); 

foreach (String s in Directory.GetFiles(@"frames\", "*.png")) 
    { 
     images.Add(new Bitmap(s)); 
    } 

但加載後加載在內存中的圖像,如果我嘗試保存所有圖片與此有關硬盤:

System.IO.Directory.CreateDirectory("result"); 
for (int i = 0; i < images.Count; i++) 
    { 
     images[i].Save(Application.StartupPath + "\\result\\img" + i + ".png", ImageFormat.Png); 
    } 

薩姆的圖像保存在錯誤的順序,他們在將它們加載到內存之前。

可能是什麼問題?

+0

請不要用 「C#」 和這樣的前綴您的圖書。這就是標籤的用途。 – 2012-03-14 20:58:16

+0

當訂單的問題,我會盡量避免使用'foreach'作爲strickly來講,這不是不能保證你所期望的順序枚舉。不過,我不確定這是你問題的根源。 – remio 2012-03-14 20:59:44

+1

最初由什麼措施有序 - 姓名,分機,修改日期,創建日期...? – hatchet 2012-03-14 21:00:08

回答

2

如果你需要有排序的文件名 - 你需要手自一體順序的GetFiles返回文件名不能保證做到這一點。

I.e.只需按名稱排序:

foreach (String s in Directory.GetFiles(@"frames\", "*.png").OrderBy(t=>t)) 
{ 
... 
}