我想要实现如下功能:上传图片,并把图片格式全部转换为jpg的,请问如何实现? 我写的代码如下,但总是抱错:“GDI+ 中发生一般性错误。”string fileContentType = FileUpload1.PostedFile.ContentType;
            if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/pjpeg")
            {
                string name = FileUpload1.PostedFile.FileName; // 客户端文件路径
                FileInfo file = new FileInfo(name);
                string fileName = Guid.NewGuid().ToString()+file.Name; // 文件名称                string webFilePath = Server.MapPath("~/UploadFile/" + fileName); // 服务器端文件路径
                if (!File.Exists(webFilePath))
                {
                    try
                    {
                        FileUpload1.SaveAs(webFilePath); // 使用 SaveAs 方法保存文件                        Label1.Text = "提示:文件“" + fileName + "”成功上传";
                        picture.Value = "../UploadFile/" + fileName;                        #region //更改图片格式
                        System.Drawing.Image imgInFile = System.Drawing.Image.FromFile(webFilePath);                        switch (fileContentType)
                        {
                            case "image/bmp":
                                imgInFile.Save(webFilePath, ImageFormat.Jpeg);
                                break;
                            case "image/pjpeg":
                                imgInFile.Save(webFilePath, ImageFormat.Jpeg);
                                break;
                            case "image/gif":
                                imgInFile.Save(webFilePath, ImageFormat.Jpeg);
                                break;
                            case "image/png":
                                imgInFile.Save(webFilePath, ImageFormat.Jpeg);
                                break;
                        }
                        imgInFile.Dispose();
                        #endregion                    }
                    catch (Exception ex)
                    {
                        Label1.Text = "提示:文件上传失败,失败原因:" + ex.Message;
                    }
                    
                }
                else
                {
                    //Label1.Text = "提示:文件已经存在,请重命名后上传";
                    Response.Write("<script>alert(\"此文件已经存在,请重新命名你的文件!\")</script>");
                }
            }

解决方案 »

  1.   

    imgInFile.Save(webFilePath, System.Drawing.Imaging.ImageFormat.Jpeg);
      

  2.   

    代码如下:
     
    string webFilePath = Server.MapPath("~/UploadFile/" + fileName); // 服务器端文件路径
                    if (!File.Exists(webFilePath))
                    {
                        try
                        {
                            FileUpload1.SaveAs(webFilePath); // 使用 SaveAs 方法保存文件                        #region //更改图片格式
                            System.Drawing.Image imgInFile = System.Drawing.Image.FromFile(webFilePath);
                            string newname = Guid.NewGuid().ToString() + ".jpg";
                            string newpath = Server.MapPath("~/UploadFile/"+newname); //创建新路径
                            switch (fileContentType)
                            {
                                case "image/bmp":
                                    imgInFile.Save(newpath, System.Drawing.Imaging.ImageFormat.Bmp);
                                    break;
                                case "image/pjpeg":
                                    imgInFile.Save(newpath, System.Drawing.Imaging.ImageFormat.Jpeg);
                                    break;
                                case "image/gif":
                                    imgInFile.Save(newpath, System.Drawing.Imaging.ImageFormat.Gif);
                                    break;
                                case "image/png":
                                    imgInFile.Save(newpath, System.Drawing.Imaging.ImageFormat.Png);
                                    break;
                            }
                            imgInFile.Dispose();
                            File.Delete(webFilePath); //删除原来的文件
                            #endregion                        Label1.Text = "提示:文件“" + newname + "”成功上传";
                            picture.Value = "../UploadFile/" + newname;                    }
                        catch (Exception ex)
                        {
                            Label1.Text = "提示:文件上传失败,失败原因:" + ex.Message;
                        }
                        
                    }我的这些代码只是把上传文件名称改为*.jpg, 并没有真正实现格式转换,请问这是为什么?