如何在AspNet.Core中读取EXIF数据

14

如何在Asp.Net Core中读取图片的EXIF信息是最佳的方法。我正在使用来自我的获取的ImageProcessorCore alpha旋转图片,但我还没有找到一种读取EXIF数据的方法,是否有图书馆的方法可以做到这一点?


有相当多的EXIF库可以在 https://www.nuget.org/packages?q=exif 上找到。 - Takahiro
2
你确定这些能在 ASP.NET Core 上运行吗?我不能包含 net45,因为我要部署到 Linux 上。我尝试了大多数库,只有 Image Processor 已经移植到了 .NET Core。 - Dživo Jelić
我不确定,但它们大多数都是开源的,你可以从Github上fork它并自己升级。如果你需要帮助,我可以帮你做,但不是今天,可能是下周。 - Takahiro
在.NETStandard 1.5上找到了一个:https://www.nuget.org/packages/NExifTool/ - Takahiro
是的,它有很好的API,但需要安装http://www.sno.phy.queensu.ca/~phil/exiftool/install.html工具。我正在尝试在我的本地服务器上安装它。 - Dživo Jelić
@salitio 我不确定我能否独立完成,但我会尝试。 - Dživo Jelić
5个回答

8

4

3
虽然ImageMagick可以与dotnet core一起使用,但它仅支持Windows而不是Linux。文档说明:“从7.0.0.0102版本开始,增加了对.NET Core的支持。目前只能在Windows上运行。” - barrypicker
虽然ImageProcessorCore现在支持EXIF读取,但Magick文档目前更好。 - Dživo Jelić

4

ImageSharp是跨平台的(https://github.com/SixLabors/ImageSharp ),并且在我的Linux系统上直接使用。它目前仍处于beta阶段,但对我来说运行良好,我只使用了exif解析功能。


3

目前(截至今日),被接受的解决方案在Linux机器上不起作用。

因此,我使用了ExifLib的源代码:https://www.codeproject.com/Articles/36342/ExifLib-A-Fast-Exif-Data-Extractor-for-NET

我稍微修改了它,改用Dispose()方法关闭流和读取器,而不是Close()方法。如果只是读取Exif数据,它的性能表现良好,因为它读取二进制数据而不是使用昂贵的GDI对象。


Nuget上的ExifLib与.NET Core不兼容 - 尝试安装会失败:Install-Package:包ExifLib 1.7.0与netcoreapp1.1不兼容 - gbjbaanb
这是正确的,然而源代码中几乎没有使用在 .net core 中不可用的命名空间。当使用源代码(并在流上使用Dispose),它就像魔法般地工作。 - Nullius
2
好的,但是Nuget包仍然存在问题,需要更新。此外,“几乎没有”与“没有”显然不同 :) - gbjbaanb
现在已经将其移植到了 .net Standard/.net Core。https://www.nuget.org/packages/ExifLib.Standard/ - Doug S

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接