gpt4 book ai didi

c# - GDI+ 中发生一般性错误

转载 作者:行者123 更新时间:2023-11-30 22:32:23 24 4
gpt4 key购买 nike

A 有一个图像上传功能,在本地主机上工作正常,但是当我尝试在 Windows Server 2003 下运行时,我收到错误消息

这是代码..

现在,在有人攻击我之前 ;) 我查看了之前的答案并检查了所有权限,它们似乎是正确的。文件夹/路径存在,等等。

ImageService imageService = new ImageService();

if (fileBase != null && fileBase.ContentLength > 0 && fileBase.ContentLength <= 2097152 && fileBase.ContentType.Contains("image/"))
{
var uploadedPath = "~/Assets/Images/";

Path.GetExtension(fileBase.ContentType);
var extension = Path.GetExtension(fileBase.FileName);

if (extension.ToLower() != ".jpg" && extension.ToLower() != ".gif") // only allow these types
{
photoViewModel.ImageValid = "Not Valid";
ModelState.AddModelError("Photo", "Wrong Image Type");
return View(photoViewModel);
}

EncoderParameters encodingParameters = new EncoderParameters(1);
encodingParameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L);

ImageCodecInfo jpgEncoder = imageService.GetEncoderInfo("image/jpeg");
var uploadedimage = Image.FromStream(fileBase.InputStream, true, true);

Bitmap originalImage = new Bitmap(uploadedimage);
Bitmap newImage = new Bitmap(originalImage, 274, 354);

Graphics g = Graphics.FromImage(newImage);
g.InterpolationMode = InterpolationMode.HighQualityBilinear;
g.DrawImage(originalImage, 0, 0, newImage.Width, newImage.Height);

var streamLarge = new MemoryStream();
newImage.Save(streamLarge, jpgEncoder, encodingParameters);

var fileExtension = Path.GetExtension(extension);
string newname;
if (photoViewModel.photoURL != null)
{ newname = photoViewModel.photoURL; }
else
{ newname = Guid.NewGuid() + fileExtension; }

var ImageName = newname;
newImage.Save(Server.MapPath(uploadedPath) + ImageName);
System.IO.File.WriteAllBytes(Server.MapPath(uploadedPath) + ImageName, streamLarge.ToArray());

photoViewModel.uploadedPath = uploadedPath;
photoViewModel.photoURL = ImageName;

originalImage.Dispose();
newImage.Dispose();
streamLarge.Dispose();
return View(photoViewModel);
}

最佳答案

对于 Image.FromStream,流必须在图像的生命周期内保持打开状态。这意味着如果流是一个文件,该文件将保持打开状态。我认为您需要处理 uploadedImage 以允许关闭流(如果您等待 GC 清理 uploadedImage,这将在未来的不确定时间点发生 - 或者可能根本不会发生)。

关于c# - GDI+ 中发生一般性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8740893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com