【发布时间】:2010-12-04 10:51:25
【问题描述】:
在追踪奇怪的 GDI+ 错误几天后,我在MSDN 上偶然发现了这个小宝石:
System.Drawing 命名空间中的类不支持在 Windows 或 ASP.NET 服务中使用。尝试在其中一种应用程序类型中使用这些类可能会产生意想不到的问题,例如服务性能下降和运行时异常。
我不知道“ASP.NET 服务”在这种情况下是否意味着“Web 应用程序”,但“服务性能下降”似乎涵盖了“GDI+ 中发生一般错误”和“超出范围”的随机分类我的应用程序抛出的“内存”错误 - 读取和写入 JPEG 图像的间歇性、不可重现的错误 - 在许多情况下 - 实际上是由 System.Drawing.Imaging 首先创建的。
那么 - 如果 GDI+ 无法在 Web 应用程序中可靠地读取和写入 JPEG 文件,我应该改用什么?
我希望用户能够上传图像(需要 JPEG,也可以使用其他格式),可靠地重新采样,并在出现任何问题时显示有用的错误消息。有任何想法吗? WPF 中的 System.Media 命名空间值得考虑吗?
编辑: 是的,我知道 GDI+“大部分时间”都有效。这还不够好,因为当它失败时,它会以一种无法优雅地隔离或恢复的方式这样做。我对适合您的 GDI+ 代码示例不感兴趣:我正在寻找用于图像处理的替代库。
【问题讨论】:
-
感谢支持报价和链接。他们现在还有“有关受支持的替代方案,请参阅 Windows 映像组件”。 msdn.microsoft.com/library/windows/desktop/…
-
还有SkiaSharp。
标签: c# asp.net gdi+ system.drawing system.drawing.imaging