2013-08-19 99 views
2

如何將Image對象插入到FileInfo列表中?FileInfo List的C#問題(添加圖片)

我有這種類型的

public List<FileInfo> _imagesList = new List<FileInfo>(); 

的圖像列表,但我需要用這樣一個方法將圖像添加到這個列表:

public void AddImage(Image img) 
{ 

} 

我用這個方法

試過
public void AddImage(string pathToImage) 
    { 
     try 
     { 
      FileInfo file = new FileInfo(pathToImage); 
       _imagesList.Add(file); 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show("Не удалось загрузить изображение. Ошибка : " + e); 
     } 

    } 
+1

爲什麼不使用'List '? – Pouki

+1

你需要什麼?文件列表或圖像列表? –

+1

FileInfo類提供了使用文件的屬性和方法。另一方面,Image類提供了處理圖像的方法和屬性(它們可能不存在於磁盤上)。你究竟想要做什麼,我們可以指出你正確的方向? – senfo

回答

1

讓我解釋爲什麼你不能那樣做Image類沒有任何對用於創建該圖像的文件的引用。當您創建Image實例時

Image.FromFile(filename) 

文件名不存儲在任何地方。你將不得不裏面Image實例是一個字節數組,其初始化是這樣的:

Stream dataStream = File.OpenRead(filename); 
image.rawData = new byte[(int) dataStream.Length]; 
dataStream.Read(image.rawData, 0, (int) dataStream.Length); 

所以,問題是 - 你不能從中Image創建文件名。實際上,可以從文件創建圖像 - 從任何流(網絡流,存儲流)創建。 Image與任何文件無關,因此您無法將其插入到FileInfo對象列表中。

那麼,作爲一種解決方法,您可以將Image保存到文件。然後插入該文件列表。

0

你不能這樣做,FileInfo在其構造函數中接受一個參數:fileName

你應該有這樣的事情:

public List<FileInfo> _imagesList = new List<FileInfo>(); 

public void Main() 
{ 
    AddImage("YourImagePath1"); 
    AddImage("YourImagePath2"); 
    // ... 
} 

public void AddImage(string path) 
{ 
    _imagesList.Add(new FileInfo(path)); 
    //var img = Image.FromFile(path); // do this if you need to load your image 
} 

UPDATE:

你改變了你的問題,現在你的代碼看起來像我的,什麼是你曾經有過代碼的問題?

+1

你說的這個Path屬性在哪裏(不是說它不存在,但我沒有看到它)? http://msdn.microsoft.com/en-us/library/system.drawing.image_properties。aspx – senfo

+0

這並不是因爲我們不知道這個類的名稱空間是什麼,而是如果他將圖像保存在某處,他應該能夠返回一個路徑(如果Image是一個自定義類或作爲擴展方法)。 – glautrou

+0

我有類似這樣的圖像img = Image.FromFile(@「D:\ 1.jpg」);現在我需要將這個img添加到具有FileInfo類型的_ImageList中 – Udjen

0

您可以使用您所提供的方法,增加new FileInfo(pathToImage)或者改變你的列表中,這樣它會包含Image項目

可以使用

public List<Image> _imagesList = new List<Image>(); 

例如。如果你分享更多的信息,我可以幫助你更多。這看起來像一個XY問題,所以也許你應該告訴我們什麼是真正的問題

+0

感謝您的回答,但我只需要使用公共列表 _imagesList =新列表(); – Udjen

+0

如果可以將Image obj添加到FileInfo List? – Udjen

+0

@Udjen圖像不會繼承FileInfo,因此您必須使用它們的路徑...是好嗎? –