image.save方法未保存图像GDI +错误发生

时间:2014-12-12 06:27:41

标签: c# image image-processing

 string ServerUploadFolder = HttpContext.Current.Server.MapPath("~/Uploads/" + value.PhysicalFileName);
                MultipartFormDataStreamProvider streamProvider = new MultipartFormDataStreamProvider(ServerUploadFolder);
                Image img = Image.FromFile(ServerUploadFolder);
                var bmp = new Bitmap(img.Width, img.Height);
 using (Graphics gfx = Graphics.FromImage(bmp))
                {
                    gfx.Clear(Color.White);
                    gfx.DrawImage(img, 0, 0, img.Width, img.Height);
                }
                bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
 string imagePath = value.FileUrl.Replace(Path.GetFileName(value.FileUrl), Path.GetFileName(value.FileUrl));
                bmp.Save(imagePath,img.RawFormat);

在此保存方法中存在问题发生的GDI +错误。 我试过很多解决方案,但这没有用。 我是旋转90度的图像,旋转后将其保存在数据库中。

2 个答案:

答案 0 :(得分:2)

在可能的情况下,图像文件已经存在于系统驱动器中,因此应用程序会抛出错误"在GDI +"中发生了一般错误。

  
      
  1. 确认该文件夹必须已存在,才能保存图像。
  2.   
  3. 确认该文件不得存在于同名路径中。
  4.   

答案 1 :(得分:0)

您收到的GDI +错误是通用的,可能涉及许多不同问题中的任何一个。请尝试以下操作,了解您的使用方法:

如果您的图像基于流,请确保在执行“保存”操作时图像仍处于打开状态。此外,请确保目标文件夹上的权限正确,即启用了写入权限。

最后,这里有一些适合我的示例代码:

// Path to source file
string inputPath = Server.MapPath(@"~\Content\somefile.jpg");

// Create an image from the file
using (Image img = Bitmap.FromFile(inputPath))
{
    // Rotate the image 90 degrees
    img.RotateFlip(RotateFlipType.Rotate90FlipNone);
    // Path to destination file
    string outputPath = Server.MapPath(@"~\Content\rotated" +
        System.IO.Path.GetExtension(inputPath));
    // Delete the destination file if it already exists
    if (System.IO.File.Exists(outputPath))
    {
        System.IO.File.Delete(outputPath);
    }
    // Save the rotated image in the same ImageFormat as the source
    img.Save(outputPath, img.RawFormat);
}