在c#中,如何将使用Directory.GetFiles()获取的图像文件保存到另一个位置?

时间:2015-03-19 19:32:45

标签: c#

我使用以下代码从磁盘中获取图像。

ImageName变量包含部分必需文件名。

Image ImageFile = Directory.GetFiles(sourcePath)
                           .Where(x => x.Contains(ImageName))
                           .Select(Image.FromFile)
                           .First();

提供目标路径,如何使用相同的文件名保存到目的地?

1 个答案:

答案 0 :(得分:1)

首先,你的代码不应该编译。 FromFile至少需要一个参数。你可能需要这样的东西:

Image ImageFile = Directory.GetFiles(sourcePath)
                           .Where(x => x.Contains(ImageName))
                           .Select(x => Image.FromFile(x))
                           .First();

然后如上所述保存它,使用Image.Save方法。像这样:

string newDestinationPath = @"C:\MyFolder\" + ImageName;
ImageFile.Save(newDestinationPath);

在查看代码时,我意识到如果ImageName不是正确的文件名,这将无效。这是一个修正错误的修订:

var ImageFile = Directory.GetFiles(sourcePath)
                    .Where(x => x.Contains(ImageName))
                    .Select(x => new { filename = Path.GetFileName(x), image = Image.FromFile(x) })
                    .First();
string newDestinationPath = @"C:\Temp\test1\" + ImageFile.filename;
ImageFile.image.Save(newDestinationPath);

此修订版将ImageFile强制转换为包含图像及其来源的文件名的匿名类型。这允许2保持在一起并允许使用适当的文件名,而不管使用的搜索字符串如何。此外,这假设每个查询将返回至少一个项目。如果没有,则需要额外的代码来检查查询是否为空。