C# ASP.NET内核中的服务器端图形

C# ASP.NET内核中的服务器端图形,c#,asp.net,graphics,asp.net-core,system.drawing,C#,Asp.net,Graphics,Asp.net Core,System.drawing,我最近将ASP.NET MVC应用程序从ASP.NET升级到ASP.NET核心 在我的控制器操作中,我有一段代码,它依赖于System.Drawing来创建配置文件图片 using (FileStream stream = new FileStream(HttpContext.Server.MapPath($"~/Content/UserFiles/{AuthenticatedUser.Id.ToString()}.jpg"), FileMode.OpenOrCreate)) { Ima

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

在我的控制器操作中,我有一段代码,它依赖于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。绘图依赖于GDI+调用,因此绑定到Windows

Imazen的vNext版本的Image Resizer将基于新的imageflow项目解决此问题。System.Drawing不应在ASP.NET等服务器环境中使用(上指出)。上提供了有关此主题的一些背景信息


我建议在几个月后使用ImagerResize的当前版本4.0.5并进行升级(第一个稳定的vNext版本将于明年发布)。

您不需要系统。如果您只想将base64转换为图像文件,请使用绘图。我正在cloudscribe.SimpleContent项目中做这件事。用户在wysiwyg编辑器中添加图像和内容,当它发回服务器时,我将它们转换为文件,并解析文件的URL以更新内容,使其链接到新文件

您可以在此处看到我的工作代码:


我们需要的是System.Drawing或其他工具来调整和优化图像。虽然我不确定目前有多少功能准备就绪,但有一个正在进行这方面的工作。现在在2019年,在ASP.NET核心和服务器端使用
System.Drawing
的问题仍然需要一些调查

我在NuGet中找到了名为“System.Drawing.Common”的包,它具有类似于
System.Drawing
的API,可以用作替代


有关此软件包的更多信息,请参阅软件包列表,比较性能和质量。

您好,我发现了一个非常类似的问题,我现在要做的是,跳过平台兼容性并删除.NET Core framework,我们将在将来看到他们将添加哪些软件包……是的,我看到了一些指向这一点的文章。为了简单起见,我暂时决定将Base64编码的图像数据存储到一个文件中,然后通过模型将其加载回去。现在已经很多了。调整大小、裁剪、翻转旋转等等。顺便提一下,Image.ToString()方法创建图像的Base64编码表示。