C# 保存图像时出错

C# 保存图像时出错,c#,C#,我想在图像中进行一些更改后保存图像。 但调用.Save()函数时出错 var tempapth = Server.MapPath("..//Images//Temp//" + btnfile.FileName); btnfile.SaveAs(tempapth); using (var fileStream = File.OpenRead(tempapth)) { va

我想在图像中进行一些更改后保存图像。 但调用.Save()函数时出错

            var tempapth = Server.MapPath("..//Images//Temp//" + btnfile.FileName);
            btnfile.SaveAs(tempapth);
            using (var fileStream = File.OpenRead(tempapth))
            {
                var ms = new MemoryStream();
                fileStream.CopyTo(ms);
                ms.Seek(0, SeekOrigin.Begin);
                System.Drawing.Image img1 = System.Drawing.Image.FromStream(ms);
                fileStream.Close();
                var bmp1 = img1.GetThumbnailImage(100, 150, null, IntPtr.Zero);
                bmp1.Save(path);
            }
bmp1.保存(路径)

出错


GDI+

编辑中出现一般性错误 在我写了这个回复后,OP改变了问题。以前,还声明了一个
path
变量,其中包含一个路径名(但没有文件名)

在代码的第一个版本中,您有一个没有文件名的路径名(
Server.MapPath(“..//Images//Category//“+catid+”/”;
)。要保存,还需要添加文件名,如:

string path = Server.MapPath("..//Images//Category//" + catid + "//Image.bmp");

path
变量包含文件夹的名称,而不是文件的名称

使用类似于:

bmp1.Save(Path.Combine(path, btnfile.FileName));
请注意,字符
/
在字符串中没有特殊含义,不应转义。使用:

var path = Server.MapPath("../Images/Category/" + catid + "/");
那么:

var srcPath = Server.MapPath("..//Images//Temp//" + btnfile.FileName);
if (!File.Exists(srcPath)
{
    throw new Exception(string.Format("Could not find source file at {0}", srcPath));
}

var srcImage = Image.FromFile(srcPath);
var thumb = srcImage.GetThumbnailImage(100, 150, null, IntPtr.Zero);

var destPath = Server.MapPath("..//Images//Category//" + catid + "//");
if (!Directory.Exists(destPath))
{
    Directory.CreateDirectory(destPath);
}

thumb.Save(Path.Combine(destPath, btnfile.FileName));

你知道,通常的情况是:什么错误?哪里Stacktrace?在GDI+中发生了一个一般性错误,您要传递给
bmp1的
path
变量的内容是什么。Save(path)
?path是我要保存图像的文件夹位置我知道
path
变量应该包含什么。我们仍然希望看到完整的代码。将文件名添加到路径中应该可以正常工作。temppath与我使用temppath存储一段时间后,我使用的是实际路径。但是,
path
中没有文件名。我有一个图像,我将其保存到了一个temp文件夹中。然后我从该temp文件夹中读取并更正了图像的尺寸,希望保存Yes。现在加载它并尝试将其保存到另一个文件。执行此操作时会发生错误,因此您需要告诉我们
路径
变量中有什么内容。