【问题标题】:System.Drawing namespace missing in aspnetVnext core CLRaspnetVnext 核心 CLR 中缺少 System.Drawing 命名空间
【发布时间】:2017-01-15 02:26:55
【问题描述】:

System.drawing 命名空间在 coreCLR 中不可用。我想调整服务器中的图像大小并返回存储它。

为了提供更多上下文,我的应用程序使用 markdown 进行内容编辑。上传图像后,我想调整大小并将其应用到 HTML 中。我正在制作一个与 coreclr 一起工作的程序集,而不是在桌面上。

【问题讨论】:

  • 从未officially supported 用于asp.net。但是,我认为 Core CLR 中也没有推荐的替代方案(Windows 映像组件)。
  • 您可以添加对核心的引用并使用它。您可以在以下位置找到它:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework
  • 我在 .NET Core 映像库上取得了很大进展,这可能是合适的github.com/JimBobSquarePants/ImageProcessor

标签: c# asp.net-core


【解决方案1】:

简短的回答(目前也是唯一的回答)是肯定的,你是完全正确的。 System.Drawing 不是也永远不会是 Core 的好选择,尤其是因为它是跨平台的。我们正在研究其他解决方案,例如此处讨论的托管 libgd 包装器https://github.com/imazen/Graphics-vNext

【讨论】:

  • 看起来真的很有趣,显然需要这样的东西。看起来 Imazen 根据他们今天发布的更新决定不自己做 libgd.net 端口。
  • 现在怎么样了?据我所知,System.Drawing 已添加到 .NET Core 或 ASP.NET Core 的下一个版本中,是否正确?
  • @szhuravel 不,只是一些基元、点、矩形等来帮助互操作。
【解决方案2】:

Alexander Köplinger 开始将 Mono 的 System.Drawing(和 WinForms)实现移植到 .NET Core。你可以在github.com/akoeplinger/mono-winforms-netcore找到他的代码。

作为公平的警告,他确实这样说:

近年来,Mono 的 WinForms 实现并没有得到太多的喜爱,因此不确定它在实验性/业余爱好应用之外是否有很多用途。

【讨论】:

    【解决方案3】:

    如果你在 Windows 上,你可以试试 Magick.Net(包装了 ImageMagick) https://magick.codeplex.com/

    【讨论】:

      【解决方案4】:

      使用Magick.NET(用于说明的示例代码)是一种非常简单的图片转换和操作方法:

      using( MagickImage ThisPicture = new MagickImage( JpegPicture ) )
      {
          ThisPicture.Scale( XDimensions, YDimensions );
          ThisPicture.ColorType = ColorType.Grayscale;
          ThisPicture.Extent( XDimensions, YDimensions, Gravity.Center, MagickColors.Black );
      
          using( PixelCollection ThisPixels = ThisPicture.GetPixels() )
          {
              byte Intensity = ThisPixels[ IX, IY ].GetChannel( 0 );
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        相关资源
        最近更新 更多