gpt4 book ai didi

c# - 用于 ASP.NET 的 System.Drawing 的替代品?

转载 作者:IT王子 更新时间:2023-10-29 04:08:12 25 4
gpt4 key购买 nike

在跟踪奇怪的 GDI+ 错误几天后,我在 MSDN 上偶然发现了这个小 gem 。 :

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.

我不知道“ASP.NET 服务”在这种情况下是否指“Web 应用程序”,但“服务性能下降”似乎涵盖了“GDI+ 中发生一般性错误”和“超出我的应用抛出的“内存”错误 - 读取和写入 JPEG 图像的间歇性、不可重现的错误 - 在许多情况下 - 实际上是由 System.Drawing.Imaging 首先创建的。

那么 - 如果 GDI+ 无法在 Web 应用程序中可靠地读取和写入 JPEG 文件,我应该使用什么来代替?

我希望用户能够上传图像(需要 JPEG,最好有其他格式),可靠地对它们重新采样,并在出现任何问题时显示有用的错误消息。有任何想法吗? WPF 中的 System.Media 命名空间是否值得考虑?

编辑:是的,我知道 GDI+“大部分时间”都能正常工作。这还不够好,因为当它失败时,它会以一种无法优雅地隔离或恢复的方式发生。我对适用于您的 GDI+ 代码示例不感兴趣:我正在寻找用于图像处理的替代库。

最佳答案

有一篇很棒的博客文章,其中包含有关使用 ImageMagick graphics library 的 C# 代码通过 Interop 在 TopTen Software Blog .这篇文章专门讨论在 linux 下在 mono 下运行 ASP.net;但是,C# 代码应该可以完美地复制粘贴,如果您在引用窗口二进制文件 (DLL) 的 Windows 下运行,您唯一需要更改的是 Interop 属性。

ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 100) including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.

还有一个 ImageMagick .Net development project在 codeplex 上,为您包罗万象。但自 2009 年以来它没有显示出积极的开发,因此它可能落后于当前的 ImageMagick 库版本。对于一个简单的调整大小例程,我可能会坚持使用互操作。您只需要仔细观察您的实现是否存在您自己的内存泄漏或未释放的资源(该库本身已经过社区的良好测试和审查)。

该库是免费和开源的。 Apache 2 许可证似乎与个人和商业用途兼容。参见 ImageMagick License Page .

该库是完全跨平台的,实现了许多强大的图像处理和转换例程,这些例程在 GDI+ 中不存在(或未在 mono 下实现),并且作为 ASP.net 图像处理的替代方案享有盛誉。

更新:看起来这里有 .NET 包装器的更新版本:http://magick.codeplex.com/

关于c# - 用于 ASP.NET 的 System.Drawing 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1528525/

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