自动将图像保存到具有用户定义名称的文件夹中

本文关键字:定义 文件夹 用户 图像 保存 | 更新日期: 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);
        }

,