自动将图像保存到具有用户定义名称的文件夹中
本文关键字:定义 文件夹 用户 图像 保存 | 更新日期: 2023-09-27 18:08:29
我有一个没有任何名称的图像,我想直接将该图像保存在具有默认名称的特定文件夹中(image1, image2,等等.....)到目前为止,我正在使用此代码手动保存图像。
if (imageOpened == true)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "PNG Files(*.png)|*.png";
if (sfd.ShowDialog() == DialogResult.OK)
imagePanelControl.SaveImage(sfd.FileName);
}
else
MessageBox.Show("Load a file before saving!");
imagePanelControl.Invalidate();
}
我该怎么做呢?
让我们试着找出我们需要什么:首先,我们需要找到所有匹配"image{ONE或MORE DIGIT}.png"模式的文件,因此:
Regex reg = new Regex(@"image('d)+[.]");
var list = Directory.GetFiles(dir, "*.png").Where(path => reg.IsMatch(path)).ToList();
检查是否存在文件,如果存在返回"image1.png",代码为:if (list.Count == 0) return "image1.png";
最后一步是找到最后一个数字,所以我们必须从列表中的文件中删除除数字之外的所有内容,对列表进行排序,并采取最后一步。代码如下:
list.Select(x => (new FileInfo(x)).Name.Replace("image", "").Replace(".png", "")).OrderBy(x => x).Last();
最后一步是解析上述值并添加1。最后的代码是:
private static string GetNewFileName(string dir)
{
Regex reg = new Regex(@"image('d)+[.]");
var list = Directory.GetFiles(dir, "*.png").Where(path => reg.IsMatch(path))
.ToList();
if (list.Count == 0)
return "image1.png";
var lastName =
list.Select(x => (new FileInfo(x)).Name.Replace("image", "").Replace(".png", "")).OrderBy(x => x).Last();
return string.Format("image{0}.png", int.Parse(lastName)+1);
}
,