ASP.NET 核心中的服务器端图形
Server-side graphics in 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 Version of Image Resizer 将基于新的 imageflow 项目解决这个问题。 System.Drawing 不应在 ASP.NET 等服务器环境中使用(在 https://msdn.microsoft.com/en-us/library/system.drawing(v=vs.110).aspx). Some background on this topic is provided on https://github.com/imazen/Graphics-vNext 上指出)。
我建议使用当前版本的 ImagerResizing 4.0.5 并在几个月内升级(第一个稳定的 vNext 版本将于明年发布)。
如果您只想将 base64 转换为图像文件,则不需要 System.Drawing。我正在我的 cloudscribe.SimpleContent 项目中这样做。用户在所见即所得编辑器中添加图像和内容,当它发回服务器时,我将它们转换为文件并解析文件的 URL 以更新内容,以便它链接到新文件。
我们确实需要 System.Drawing 或其他一些工具来调整和优化图像。有一个 ImageSharp project here 正在处理这个问题,但我不确定目前有多少功能准备就绪
刚看到你的问题。现在在 2019 年,在 ASP.NET 核心和服务器端使用 System.Drawing
的问题仍然需要一些调查。
我在 NuGet 中找到了名为 "System.Drawing.Common" 的包,它有 API 和 System.Drawing
一样,可以作为替代。
有关此包的更多信息,请参阅 here 比较性能和质量的包列表。
我最近将 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 Version of Image Resizer 将基于新的 imageflow 项目解决这个问题。 System.Drawing 不应在 ASP.NET 等服务器环境中使用(在 https://msdn.microsoft.com/en-us/library/system.drawing(v=vs.110).aspx). Some background on this topic is provided on https://github.com/imazen/Graphics-vNext 上指出)。
我建议使用当前版本的 ImagerResizing 4.0.5 并在几个月内升级(第一个稳定的 vNext 版本将于明年发布)。
如果您只想将 base64 转换为图像文件,则不需要 System.Drawing。我正在我的 cloudscribe.SimpleContent 项目中这样做。用户在所见即所得编辑器中添加图像和内容,当它发回服务器时,我将它们转换为文件并解析文件的 URL 以更新内容,以便它链接到新文件。
我们确实需要 System.Drawing 或其他一些工具来调整和优化图像。有一个 ImageSharp project here 正在处理这个问题,但我不确定目前有多少功能准备就绪
刚看到你的问题。现在在 2019 年,在 ASP.NET 核心和服务器端使用 System.Drawing
的问题仍然需要一些调查。
我在 NuGet 中找到了名为 "System.Drawing.Common" 的包,它有 API 和 System.Drawing
一样,可以作为替代。
有关此包的更多信息,请参阅 here 比较性能和质量的包列表。