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

ser*_*0ne 5 c# asp.net graphics system.drawing 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);
}
Run Code Online (Sandbox Code Playgroud)

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

data:image/png;base64,....
Run Code Online (Sandbox Code Playgroud)

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

Ral*_*ing 1

正如 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上提供了有关此主题的一些背景信息。

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