如何使用filestream保存位图

时间:2012-09-18 12:03:50

标签: c# asp.net-mvc asp.net-mvc-3 c#-4.0

我创建了bitmap,我想将其保存在上传文件夹中。我怎样才能做到这一点?

我的代码:

public FileResult image(string image)
{
    var bitMapImage = new Bitmap(Server.MapPath("/Content/themes/base/images/photo.png"));
    Graphics graphicImage = Graphics.FromImage(bitMapImage);
    graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
    graphicImage.DrawString(image, new Font("Trebuchet MS,Trebuchet,Arial,sans-serif", 10, FontStyle.Bold), SystemBrushes.WindowFrame, new Point(15, 5));
    graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360);
    MemoryStream str = new MemoryStream();
    bitMapImage.Save(str, ImageFormat.Png);
    return File(str.ToArray(), "image/png");
}

我将使用的路径:

string mynewpath = Request.PhysicalApplicationPath + "Upload\\";

2 个答案:

答案 0 :(得分:3)

Bitmap类有几个Save方法的重载。其中一个将文件名作为参数,这意味着您可以使用

bitMapImage.Save(mynewpath + "somefilename.png", ImageFormat.Png);

答案 1 :(得分:1)

问题似乎与您的代码冲突(在那里从图像中加载文件并将其返回) - 无论如何:Image类上有一个“保存”方法,所以只需在同一个服务器上使用它。 MapPath技巧......只需确保ASP.NET帐户具有目标文件夹的访问/写入权限:

string mynewpath = Request.PhysicalApplicationPath + "Upload\\myFile.png";
bitMapImage.Save(mynewpath);

备注:这是使用你的路径,但我不知道这是否真的是你的问题的正确选择 - 正如我所说:MapPath应该是更安全的赌注。