将图像加载到内存中时,.Net是否完全使用DDB,DIB或其他内容?如果可能,请引用您的消息来源。
我很想知道,因为我们目前有一个经典的ASP应用程序正在使用第三方组件来加载偶尔会创建“没有足够的存储空间来处理此命令。”错误的图像。错误是非常不一致的,但往往发生在较大的图像上(并非总是如此,但经常)。重置IIS后,再次处理同一文件通常可以正常工作。
经过大量研究后,我发现DDB在处理大图像时往往会出现这个问题,因为它们在视频内存之外。考虑到我们在带有集成视频卡和有限共享内存的Web服务器上运行,这肯定是我们的问题。
我们处于将应用程序转换为.Net的早期阶段,我想知道是否使用.Net这可能是我们当前方法的可行替代方案,这就是我提出这个问题的原因。
欢迎任何建议:)但出于好奇,如果没有别的,我真的希望能回答这个问题; .Net使用DDB还是DIB?
答案 0 :(得分:4)
答案 1 :(得分:1)
经过大量研究后,我确定虽然不支持System.Drawing命名空间,it will probably work for many people(由于我们所做的大量图像处理,可能不适合我们)。
但是,支持的是Windows Imaging Components,但它不是托管代码,尽管它们确实提供了围绕Win32调用的瘦.Net包装器。 Bertrand Le Roy的博客上有一篇关于如何使用它的文章:The fastest way to resize images from ASP.NET. And it’s (more) supported-ish。 WIC似乎比GDI +快得多。
Bertrand还介绍了如何操作图像使用WPF,这是不支持但使用WIC,似乎与直接WIC相同,并且可能更容易编码。这篇文章是:Resizing images from the server using WPF/WIC instead of GDI+
WIC和WPF都需要完全信任,因此如果您在中等信任环境中工作,您将无法使用GDI +。