【问题标题】:using System.Drawing.Imaging; Imaging does not exist in the System.Drawing使用 System.Drawing.Imaging; System.Drawing 中不存在图像
【发布时间】:2017-08-18 11:22:00
【问题描述】:

我正在尝试使用此库从 .Net Core 应用程序中的照片中提取元数据:

https://www.codeproject.com/Articles/27242/ExifTagCollection-An-EXIF-metadata-extraction-libr

但是,在实现 ExifTagCollection 类时,我得到了标题中列出的错误。

我已成功引用 System.Drawing,但它无法识别其绘图扩展名。任何帮助都会很棒。也对其他图书馆的建议持开放态度,以实现我的目标。谢谢

【问题讨论】:

  • 你用什么平台?
  • 感谢回复。不确定您的意思是我正在尝试与 Web 应用程序集成。认为我可能缺少 System.Windows.Forms 参考,现在检查....
  • 您的目标是什么:Winforms、WPF、ASP..? 总是正确标记您的问题! - MSDNSystem.Drawing.Imaging 命名空间中的类不支持在 Windows 或 ASP.NET 服务中使用。尝试在其中一种应用程序类型中使用这些类可能会产生意想不到的问题,例如服务性能下降和运行时异常。
  • 安装 CoreCompat nuget 包。
  • @RyeGuy 我不能 100% 确定您的问题,但 CoreCompat 在 .NET Core 中提供了 System.Drawing 功能。我在 Linux 上部署的生产代码中使用它,效果很好。但是,我从未尝试过提取 Exif 信息。只是基本的 GDI 任务。 github.com/CoreCompat/CoreCompat这表明它可能有效?:blogs.msdn.microsoft.com/dotnet/2017/01/19/…

标签: c# asp.net-core-mvc exif


【解决方案1】:

如果您在 .NET Core 上寻找与 System.Drawing 相关的功能,您应该可以使用 System.Drawing.Common

它在 .NET Core 上提供 System.Drawing API,适用于 Windows、Linux 和 macOS。

如果您使用的是 Linux 和 macOS,则需要安装 libgdiplus 才能正常工作。要在 macOS 上安装 libgdiplus,请运行 brew install mono-libgdiplus;在 Linux 上,您应该能够使用包管理器安装 libgdiplus 包。希望这种部署在未来会变得更容易。

它目前在 NuGet 上以 System.Drawing.Common 包的形式预览。

从长远来看,您可能需要考虑迁移到其他库,例如 ImageSharp。

【讨论】:

    【解决方案2】:

    如果您查看microsoft 的网站,您会看到:

    “System.Drawing.Imaging 命名空间中的类不支持在 Windows 或 ASP.NET 服务中使用。尝试从这些应用程序类型之一中使用这些类可能会产生意外问题,例如减少服务性能和运行时异常。”

    您正在使用 ASP.net 创建一个 Web 应用程序,因此您的项目不支持此类

    【讨论】:

    • 谢谢你的答案。将不得不找到一个新的库来从与 ASP.NET Core MVC 一起使用的照片中提取元数据。有什么建议吗?
    • 很遗憾没有 |:
    • 您最好的选择可能是 ImageSharp - github.com/JimBobSquarePants/ImageSharp。但是它还没有达到稳定版本。
    【解决方案3】:

    正如@TimonPost 所说,您不能在 ASP.NET 中使用该命名空间,因为它依赖于一个交互式会话(这也是它在 Windows 服务中也不起作用的原因)。

    如果您只是想要一种简单的方法来访问在 ASP.NET Core 中工作的图像中的元数据,请查看我的 MetadataExtractor 库。

    https://github.com/drewnoakes/metadata-extractor-dotnet

    【讨论】:

    • 这个库看起来很棒,德鲁!不幸的是,如果我尝试在包管理器控制台中安装它并收到错误消息“元数据提取器与 .netcoreapp1.1 不兼容”
    • @RyeGuy,抱歉,我应该说使用 v2 的预发布版(这是包管理器的一个选项)。它很快就会发布,并且非常稳定。我推迟了,因为我可能会在适当的 2.0 版本中添加一两个更多功能。
    猜你喜欢
    • 2019-09-22
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多