.Net核心图像处理(裁剪和调整大小)/文件处理

Kem*_*min 17 image-manipulation crop image-resizing asp.net-core-mvc asp.net-core

我花了最后5个小时试图找到一种可行的方法来完成我认为非常简单的任务,如果它是我正在使用的.NET系列的早期版本:

  1. 正在上传图片
  2. 调整大小和裁剪图片
  3. 将新图片保存到目录中

我来到了几个处于预发布阶段或未完成阶段的图书馆.

有没有人完成上述任务而没有特别包括System.Drawing命名空间和/或为早期版本的.NET框架添加依赖项?

2016年8月8日更新

我最终使用System.Drawing非常烦人和令人失望的东西.如果您正在开发成千上万开发人员使用的软件,并且如果所有这些开发人员都依赖于该软件的组件,我相信,人们不能只想出一个新版本,在会议期间"甜言蜜语"展示它除了你的公开演讲技巧,而不是对你的工作嗤之以鼻,一方面自豪地高举它,另一方面,剥夺它最常用和要求的部分.

我非常兴奋地理解和欣赏 - 带有核心框架的.net的新时代 - 自从经典asp的第一天起成为一个忠诚的asp开发者 - 然而,对我来说,它只是一个不完整的产品,导致更多的挫折和失望而不是快乐.在当今内容驱动的世界中有数百万个网站,完全依赖内容管理,你不能只是说出来,"嘿,我有这种精彩,技术,更精简,更快的等等等等",但是错了,你会"管理"您的内容有一些问题..

不应该忘记,虽然,MS(和我们)对这个新的核心框架感到非常兴奋,现在是开源等,还有其他语言和框架在做MS正在做的事情,对于现在很长一段时间.

Sor*_*ren 13

ImageSharp ImageSharp

ImageSharp是一个全新的,功能齐全,全面管理,跨平台的2D图形API.

ImageSharp旨在使图像处理民主化,为您带来功能强大且非常简单的API.

相比之下,System.Drawing我们已经能够开发出更灵活,更容易编写代码的东西,而且更容易出现内存泄漏.系统范围的进程锁已经消失; ImageSharp图像是线程安全的,在Web环境中完全受支持.

针对.Net Standard 1.1构建的ImageSharp可用于设备,云和嵌入式/物联网场景.

  • 在调试,32位模式,因为在那个环境中不支持SIMD,你不能打扰到实际测试,或接触到我.你故意拖着我的图书馆吗? (11认同)
  • ImageSharp 工作,但它太慢了 - 13 秒调整平均大小的图像...... (2认同)

Hos*_*kat 6

您可以使用Microsoft ASP.NET Core JavaScript Services在运行时从.NET代码调用任意NPM包,这意味着您可以选择任何提供图像缩放并调用它的npm包.

以下示例显示如何使用JavaScriptServices调整图像大小 https://github.com/aspnet/JavaScriptServices/tree/dev/samples/misc/NodeServicesExamples

希望有助于


Dmi*_*try 5

.NET Core Image Processing博客文章(2017 年 1 月 19 日)比较了 6 个库:

  • CoreCompat.System.Drawing
  • 图像锐化
  • Magick.NET(仅限 Win)
  • 夏普
  • FreeImage-dotnet-core
  • 魔法缩放器

2 月 26 日更新:帖子已更新,添加了两个新包

  • 使用 SkiaSharp。CoreCompat 不是线程安全且不完整的,ImageSharp 太慢了,Magick.NET WinOnly,FreeImage 有错误,MagicScaler 只做图像缩放。 (2认同)
  • Magick.NET 不仅仅是 win,我在 aspcore 上使用它。 (2认同)

Ash*_*Lee 2

简短的回答是否定的,还没有。大多数(如果不是全部)当前的库都依赖于 System.Drawing。如果您现在需要这个,我会走这条路并添加 System.Drawing。

.NET 团队目前正在研究 Core 1.0 堆栈中缺少的功能,但这个功能在他们的优先级列表中还不够高:链接

这是一个值得关注的库,因为它们非常接近无需 System.Drawing 的可发布 API。:图像锐利