C#:保存图像错误

C#: Save image error

我正在尝试保存一张新图片,但是 C# 给我一个如下图所示的错误

错误参考以下代码

string oldfilename = valid.getStringBeforeAnyChar(fi.Name, '.'); //"1"
string newfilename = FolderDir + "\" + subfolderoutput + "\" + oldfilename + Copyright + fi.Extension;
//"C:\Users\RHIT ! Solution\Desktop\direktori\Output\1[Watermarked by : RHIT Watermarker ].png"
try
{
    imgPhoto.Save(newfilename, ImageFormat.Jpeg); // <-- error here
    imgPhoto.Dispose();
    imgWatermark.Dispose();
}
catch (Exception e)
{
    MessageBox.Show(e.ToString());
}

我哪里错了?如何解决这个问题?我不知道创建新文件的 output 文件夹限制

几乎可以肯定 newFileName 有问题。您可以在调试器中查看此值,以了解预期的文件名和路径可能有什么问题。

不过,作为一般性建议,最好使用 Path.Combine() 将目录和文件名组合到一个路径中,这样可以解决很多潜在问题,例如重复或缺少“\”。

Windows 文件路径不支持冒号 (:) 字符,以及其他几个文件名字符:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx#naming_conventions

总而言之;无效字符是:

  1. <(小于)
  2. >(大于)
  3. :(冒号)
  4. "(双引号)
  5. /(正斜杠)
  6. \(反斜杠)
  7. |(竖条或管道)
  8. ?(问号)
  9. *(星号)

反斜杠 (\) 字符仅在用作 folder/directory 分隔符时才可能出现。