ASP.NET Core中的服务器端图形

我最近将ASP.NET MVC应用程序从ASP.NET升级到ASP.NET Core。

在我的控制器操作中,我有一段依赖System.Drawing创建个人资料图片的代码

using (FileStream stream = new FileStream(HttpContext.Server.MapPath($"~/Content/UserFiles/{AuthenticatedUser.Id.ToString()}.jpg"), FileMode.OpenOrCreate)) { Image image = Image.FromStream(model.DisplayPicture.InputStream); image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); } 

图像数据作为Base64编码图像发布到服务器

 data:image/png;base64,.... 

由于.NET Core中没有System.Drawing ,是否还有其他库可以实现这一目标?

正如Stanislav指出的那样,当前的解决方案是在完整的.NET框架上使用ASP.NET Core。 System.Drawing依赖于GDI +调用因此绑定到Windows。

Imazen的vnext版本的Image Resizer将基于新的imageflow项目解决这个问题。 System.Drawing不应该在像ASP.NET这样的服务器环境中使用(在https://msdn.microsoft.com/en-us/library/system.drawing(v=vs.110).aspx上指出)。 https://github.com/imazen/Graphics-vNext上提供了有关此主题的一些背景知识。

我建议使用当前版本4.0.5的ImagerResizing并在几个月内升级(第一个稳定的vNext版本将在明年公布)。

如果你要做的只是将base64转换为图像文件,则不需要System.Drawing。 我在我的cloudscribe.SimpleContent项目中这样做。 用户在wysiwyg编辑器中添加图像和内容,当它回发到服务器时,我将它们转换为文件并解析文件的URL以更新内容,以便链接到新文件。

你可以在这里看到我的工作代码: https : //github.com/joeaudette/cloudscribe.SimpleContent/blob/master/src/cloudscribe.SimpleContent.Web/Services/FileSystemMediaProcessor.cs

我们需要System.Drawing或其他一些工具来调整和优化图像。 这里有一个ImageSharp项目正在进行中,虽然我不确定目前有多少function已准备就绪