使用下面的代码时,我有时会收到错误“GDI +。在System.Drawing.Image.Save中发生了一般错误”。我开始相信这是因为我在保存新创建的图像之前删除了源图像。是这样的吗?什么时候删除源图像文件真的安全吗?
子类:
thumbnailImage = GetThumb();
thumbnailImage.Save(fullDestinationFilename);
基类:
public virtual Image GetThumb() {
using (var image = Image.FromFile(sourceFile)) {
thumbImage = Crop(image, BrowserWidth, BrowserHeight));
}
File.Delete(sourceFile);
return thumbImage;
}
private static Image Crop(Image image, int width, int height) {
var croppedImage = new Bitmap(width, height);
using (var g = Graphics.FromImage(croppedImage)){
g.DrawImage(image, 0, 0, image.Width, image.Height);
return croppedImage;
}
}
答案 0 :(得分:0)
我想我现在已经开始工作了。问题不在于我向你展示的代码。将缩略图保存到文件后,我将其写入http响应流并且DID NOT DISPOSE缩略图图像。当另一个导致该文件保存的请求进入时,它无法覆盖该图像文件,因为它仍然被锁定在上一个请求中。
答案 1 :(得分:-1)
你尝试过这样的事吗
public virtual Image GetThumb() {
using (var image = Image.FromFile(sourceFile)) {
thumbImage = Crop(image, BrowserWidth, BrowserHeight));
}
if(thumbImage != null)
{
File.Delete(sourceFile);
}
return thumbImage;
}
此外,我认为如果您使用 try catch 语句会更好。