我想在图像发生一些变化后保存图像。 但是在调用.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.save(路径);
给出错误
GDI +中发生了一般错误
答案 0 :(得分:0)
修改强>
在我写完这个回复后,OP改变了问题。以前,还声明了一个path
变量,其中包含路径名(但没有文件名)。
在代码的第一个版本中,您有一个没有文件名的路径名(Server.MapPath("..//Images//Category//" + catid + "//");
)。要保存,您还需要添加文件名,例如:
string path = Server.MapPath("..//Images//Category//" + catid + "//Image.bmp");
答案 1 :(得分:0)
path
变量包含文件夹的名称,而不是文件。
使用类似:
bmp1.Save(Path.Combine(path, btnfile.FileName));
旁注,字符/
在字符串中没有特殊含义,不应对其进行转义。使用:
var path = Server.MapPath("../Images/Category/" + catid + "/");
答案 2 :(得分:0)
怎么样:
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));