FileInfo列表中的C#问题(添加图片)

时间:2013-08-19 11:40:17

标签: c#

如何将Image对象插入FileInfo列表?

我有一个包含此类型图像的列表

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

    }

3 个答案:

答案 0 :(得分: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保存到文件中。然后将该文件插入列表。

答案 1 :(得分: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
}

<强>更新

你改变了你的问题,你的代码现在看起来像我的,你以前的代码中有什么问题?

答案 2 :(得分:0)

您可以使用您提供的方法,添加new FileInfo(pathToImage)或更改您的列表,使其包含Image个项目

你可以使用

public  List<Image> _imagesList = new List<Image>();
例如,

。如果您分享更多信息,我可以帮助您更多。这看起来像一个XY问题,所以也许你应该告诉我们什么是真正的问题

相关问题