保存图像时出错

时间:2012-10-08 13:14:05

标签: c#

我想在图像发生一些变化后保存图像。 但是在调用.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 +中发生了一般错误

3 个答案:

答案 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));