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度的图像,旋转后将其保存在数据库中。
答案 0 :(得分:2)
在可能的情况下,图像文件已经存在于系统驱动器中,因此应用程序会抛出错误"在GDI +"中发生了一般错误。
- 确认该文件夹必须已存在,才能保存图像。
- 确认该文件不得存在于同名路径中。
醇>
答案 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);
}