.net 是否有任何替代图像处理库?我更喜欢托管和开源的东西。
我问这个是因为两个原因:
- 过去我遇到过使用 System.Drawing 难以调试 GDI+ 错误
- 我读过在 asp.net web 应用程序中使用 System.Drawing 不是 100% 支持的。
谢谢!
编辑:澄清,我知道 System.Drawing 可以运行 asp.net 网络应用程序 - 我过去曾使用过它。我真的只是想知道是否有任何用于 .net 的托管图像处理库 :)
.net 是否有任何替代图像处理库?我更喜欢托管和开源的东西。
我问这个是因为两个原因:
谢谢!
编辑:澄清,我知道 System.Drawing 可以运行 asp.net 网络应用程序 - 我过去曾使用过它。我真的只是想知道是否有任何用于 .net 的托管图像处理库 :)
您应该查看.NET 3.0 附带的 WPF Imaging 库。它们经过优化且功能强大(用于运行 Aero,因此您知道它们很高效)。它们不依赖于 WPF 调度程序,易于扩展,并得到官方支持。你还能想要什么?
我不知道有任何完全托管的 2D 绘图库是免费的还是开源的(似乎有一些商业可用,但 OSS 是要走的路)。但是,您可能会查看Mono 与 Cairo 的绑定。
Cairo 是一个独立于平台的 2D 绘图 API。您可以在开罗主页上找到有关它的更多信息。开罗维基百科页面也有一些很好的信息。
Cairo 在开源世界中也被广泛使用,这对我来说说明了它的稳健性。Mozilla、Webkit 和 Mono 都使用它,等等。具有讽刺意味的是,Mono 实际上使用它来支持他们的 System.Drawing 实现......看图。
也可能有一种方法可以使用 Mono 的 System.Drawing 实现作为 Microsoft 实现的直接替代品,尽管我不确定它如何或是否会起作用。我可能会先用 Mono 的版本替换 System.Drawing.dll 引用,然后尝试处理任何错误。
轶事证据 #1:我使用 GDI+ 在 ASP.NET 中进行动态图像创建,没有任何问题。我不确定甚至会出现什么问题。
关于 (1),大多数难以调试的错误是由于未关闭打开的句柄(托管区域中的 Dispose())。我很好奇你在哪里听到的(2)。