如何将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);
}
}
答案 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问题,所以也许你应该告诉我们什么是真正的问题