gpt4 book ai didi

服务器上 GetThumbnailImage 中的 C# 内存不足异常

转载 作者:行者123 更新时间:2023-11-30 13:36:59 43 4
gpt4 key购买 nike

当用户向我们发送图像时,我正在运行以下代码来创建缩略图:

public int AddThumbnail(byte[] originalImage, File parentFile)
{
File tnFile = null;
try
{
System.Drawing.Image image;
using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(originalImage))
{
image = System.Drawing.Image.FromStream(memoryStream);
}
Log.Write("Original image width of [" + image.Width.ToString() + "] and height of [" + image.Height.ToString() + "]");
//dimensions need to be changeable
double factor = (double)m_thumbnailWidth / (double)image.Width;

int thHeight = (int)(image.Height * factor);
byte[] tnData = null;
Log.Write("Thumbnail width of [" + m_thumbnailWidth.ToString() + "] and height of [" + thHeight + "]");
using (System.Drawing.Image thumbnail = image.GetThumbnailImage(m_thumbnailWidth, thHeight, () => false, IntPtr.Zero))
{
using (System.IO.MemoryStream tnStream = new System.IO.MemoryStream())
{
thumbnail.Save(tnStream, System.Drawing.Imaging.ImageFormat.Jpeg);
tnData = new byte[tnStream.Length];
tnStream.Position = 0;
tnStream.Read(tnData, 0, (int)tnStream.Length);
}
}
//there is other code here that is not relevant to the problem

}
catch (Exception ex)
{
Log.Error(ex);
}

return (tnFile == null ? -1 : tnFile.Id);
}

这在我的机器上运行良好,但是当我在测试服务器上运行它时,我总是在该行出现内存不足异常: 使用 (System.Drawing.Image thumbnail = image.GetThumbnailImage(m_thumbnailWidth, thHeight, () => false, IntPtr.Zero))它不是在处理大图像:它试图将 480*640 图像转换为 96*128 缩略图。我不知道如何调查/解决这个问题。有人有什么建议吗?它总是发生,即使在我重新启动 IIS 之后也是如此。我最初确实认为图像可能已损坏,但尺寸是正确的。谢谢。

最佳答案

我们在 ASP.Net 服务器中使用 GDI+ 操作时也遇到了类似的问题。你提到你的代码在服务器上运行让我想到,这可能是同一个问题。

请注意,服务器不支持在 System.Drawing 命名空间中使用类。致命的是,它可能会工作一段时间,然后突然(即使没有更改代码)出现错误。

我们不得不重写服务器代码的重要部分。

查看评论:

Caution note

Classes within the System.Drawing namespace are not supported for use within a Windows or ASP.NET service. Attempting to use these classes from within one of these application types may produce unexpected problems, such as diminished service performance and run-time exceptions. For a supported alternative, see Windows Imaging Components.

来源: http://msdn.microsoft.com/de-de/library/system.drawing(v=vs.110).aspx

关于服务器上 GetThumbnailImage 中的 C# 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27528057/

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