-1

我想在图像进行一些更改后保存图像。但我在调用 .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+ 中出现一般错误

4

3 回答 3

0

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

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

string path = Server.MapPath("..//Images//Category//" + catid + "//Image.bmp");
于 2012-10-08T13:15:43.710 回答
0

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

使用类似的东西:

bmp1.Save(Path.Combine(path, btnfile.FileName));

旁注,字符/在字符串中没有特殊含义,不应转义。采用:

var path = Server.MapPath("../Images/Category/" + catid + "/");
于 2012-10-08T13:21:08.297 回答
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));
于 2012-10-08T13:22:43.873 回答