- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在跟踪奇怪的 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/
我不完全确定我理解 substitute 的作用,尽管我以前在它的代码中使用过。今天在shiny::exprToFunction中遇到了如下几行代码: function (expr, env = pa
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我最近发现了 crockford 的 Javascript supplant 函数。函数是这样的—— if (!String.prototype.supplant) { String.prot
在我工作的一些项目中,添加了一些具有这种语法的 block : var [code, name] = input.split("/"); console.log(code); console.log(
我对 JavaBeans 模式的憎恨就像一千个太阳的火焰一样燃烧。为什么? 冗长。现在是 2009 年。我不应该为一个属性写 7 LOC。如果他们有事件监听器,请捕获你的帽子。 没有类型安全的引用。没
是否有比 PHP 执行速度更快且具有相同功能集(例如对常见 RDBMS、Curl、Regex 等的支持)的替代品? 用 C 编写网站代码怎么样?效果如何?该平台是否独立并在每台服务器上运行? 最佳答案
我正在开始新项目。客户端界面基于 GWT(和 GXT),我没有说它是预先确定的。但是,我可以选择服务器端,这样我就可以玩得开心,并希望在这个过程中学到一些新东西。一些要求是: 与服务器的交换将通过使用
我目前使用 CentOS 5.6(Ghostscript 8 - ImageMagick-6.2.8) 我正在尝试将 pdf 的第一张图像转换为 jpg 文件。 我知道我当前的设置无法转换压缩的 pd
2021 年更新: 只使用 MathJax;您不应该再支持旧版本的 IE。 我想使用 MathJax 来显示 MathML 方程,但它在 IE 中的性能慢得令人无法接受(是的,我读过使用 Emulat
BinaryFormatter 序列化的 128³ 数组加倍,占用 50 MB 空间。序列化具有两个双字段的 128³ 结构数组需要 150 MB 和超过 20 秒的处理时间。 是否有快速简单的替代方
我发现 $.each 非常慢,如果包含大量各种 jQuery 效果,会给网页带来问题。 我想知道 $.each 是否有一个好的替代方案,例如: $('ul li').each(function() {
我正在编写一个Mac应用程序,它提供类似“测试”的功能。此应用程序(通过与服务器的连接)。基本上,该应用程序将为学生提供一个故事供阅读,然后是一系列问题(也来自服务器),用户可以(尝试)选择正确的答案
我喜欢 WPF,但我讨厌 XAML。 XAML 过于冗长,在 Microsoft 尝试对其进行扩展时出现语法问题(请参阅 StringFormat on Bindings),并且难以导航。 XAML
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足 Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以
有没有类似 SoftwareFx 的 PowerGadgets 的产品?我正在查看支持自动刷新的 powershell 的仪表控件。 最佳答案 检查 ShowUI 模块。 http://showui.
我正在开发一个项目,其中页面需要能够根据服务器的状态保持更新。 我喜欢 websocket,因为它们为我提供了一种从服务器推送消息的方法,但可用性是一个问题。 我需要通用方法在网络服务器和浏览器客户端
我最近一直在使用 openX 自托管广告管理软件,但它太慢了。 目标:我需要能够展示一个广告,获得 10 次点击,然后停用该广告,并且每天都这样做。 问题:当我将 openX 设置为每天 10 次点击
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在尝试实现一个简单的类,该类允许用户裁剪用于其个人资料图片的图像。这是一个 Java Web 应用程序。 我做了一些搜索,发现 java.awt 有一个 BufferedImage 类,这看起来(
只是一个关于 JQuery 的简单问题,我一直在使用phonegap 并使用 JQuery 制作了一些应用程序。其中一个运行速度非常慢,所以我一直在努力尽可能地精简它。 我一直在考虑的一个更改是用更小
我是一名优秀的程序员,十分优秀!