繁体   English   中英

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

[英]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版本的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项目正在进行中,虽然我不确定目前有多少功能已准备就绪

刚刚遇到你的问题。 现在在2019年,在ASP.NET Core和服务器端使用System.Drawing的问题仍然需要一些调查。

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

有关此包装的更多信息,请在此处列出包装,比较性能和质量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM