使用.NET Core处理图像


72

我已经将项目从.NET 4.5更新为.NET Core(带有ASP.NET Core)。在以前的版本中,我有一些非常简单的代码,这些代码使用位图对象从System.Drawing调整图像的大小。

据我了解System.Drawing,不能在.NET Core中使用它,因为它不是跨平台的,但是可以代替使用什么呢?

我已经用谷歌搜索了,找不到任何东西。我唯一能找到的就是这篇文章,至今没有任何代码。


在您链接的github上找到了这个。有帮助吗?
SimpleVar 2015年


据我了解,.NET(核心)团队仍在与Xamarin团队进行讨论。Xamarin建立了一个名为SkiaSharp的库,该库是跨平台Skia库的包装,而后者又是Google Chrome的图形库。它可以在Android,iOS,Linux,Windows等操作系统下运行,这使其非常适合.NET Core。但是直到今天,他们还没有为.NET Core(blog.xamarin.com/cross-platform-2d-graphics-with-skiasharp)完成它。我敢打赌,该库将成为.NET Core和绘图的未来故事。
汤玛斯(Thomas)

1
添加更多事实以协助@Thomas SkiaSharp可以作为XobotOS的一部分追溯到2012年。Xamarin最近使它可用,因此可以单独使用,也可以用作将来2D渲染框架的基础(例如,SkiaSharp上的System.Drawing而不是GDI + / libgdiplus)。在github.com/mono/SkiaSharp/issues/20中
Lex Li

1
关于这一主题发布2017年1月19日由贝特朗·勒罗伊更新的链接 blogs.msdn.microsoft.com/dotnet/2017/01/19/...
phanf

Answers:


39

免责声明:这是我的软件。

我正在运行在.NET Core上的跨平台2D图形库。它目前是alpha版本,但已经支持全面的功能集。

https://github.com/JimBobSquarePants/ImageSharp

用法示例。

using (FileStream stream = File.OpenRead("foo.jpg"))
using (FileStream output = File.OpenWrite("bar.jpg"))
{
    Image image = new Image(stream);
    image.Resize(image.Width / 2, image.Height / 2)
         .Greyscale()
         .Save(output);
}

那么如何在特定的OS画布上进行绘制呢?有人从操作系统中抽象出来吗?
埃里克·施耐德

TK具有用于图形的.Net Core库。我希望最终会得到UI lib,但它可能会包装TK。
IAbstract

@IAbstract TK,您有共享链接吗?
詹姆斯·南


16

我发现基于Mono的源的System.Drawing for .NET Core的实现保持在:

NuGet软件包位于:

您可以通过以下方式在.NET Core应用程序中引用它project.json

{
  "dependencies": {
    "CoreCompat.System.Drawing": "1.0.0-beta006",
    ...
  },
}

2
这是预发行软件,因此请确保选中“显示预发行”框。
user3791372 '17

该软件包已被标记为已弃用,自2016
。– BurnsBA '20

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.