使用asp.net c#上传为png后如何保存图片jpg或其他格式

时间:2015-07-29 20:28:34

标签: c# asp.net

我有asp:FileUpload,我想在网站上的Images forlder中将所有可接受格式的所有上传图像保存为png图像,我的上传代码为:

protected void btnSave_Click(object sender, EventArgs e)
    {
        if (fup2.HasFile)
        {
            Regex reg = new Regex(@"(?i).*\.(gif|jpe?g|png|tif)$");
            string uFile = fup2.FileName;
            if (reg.IsMatch(uFile))
            {
                string saveDir = Server.MapPath(@"~/Images/");
                string SavePath = saveDir + uFile;
                fup2.SaveAs(SavePath);
            }
            else
            {
                Response.Write("Error");
            }

        }
    }

我也尝试过使用

var tempImg = Image.FromFile(Server.MapPath(@"~/Images/")); tempImg.Save("a.tiff", ImageFormat.png);

不断抛出file not found exception

有任何新想法吗?

2 个答案:

答案 0 :(得分:1)

使用Bitmap.FromStream。类似的东西:

 using System.Drawing;

 protected void btnSave_Click(object sender, EventArgs e)
 {
    if (fup2.HasFile)
    {
        Regex reg = new Regex(@"(?i).*\.(gif|jpe?g|png|tif)$");
        string uFile = fup2.FileName;
        if (reg.IsMatch(uFile))
        {
            string saveDir = Server.MapPath(@"~/Images/");
            string SavePath = saveDir + Path.GetFileName(uFile) + ".png";
            Bitmap b = (Bitmap)Bitmap.FromStream(fup2.PostedFile.InputStream);
            b.Save(SavePath, ImageFormat.Png);
        }
        else
        {
            Response.Write("Error");
        }

    }
}

答案 1 :(得分:0)

Image.FromFile - > Save应该可以做到这一点,但我不知道你是如何使用正确的路径的 - 你只需要指向目录而不是实际文件,而不是调用FromFile

作为旁注,在Web处理线程上进行此处理并不是一个好主意,但对于小负载,它可以工作。