What is the best EXIF library for .Net?
I am looking for simple straightforward solution for accessing EXIF information of jpeg images in .Net. Does anybody has experience with this?
If you're willing to use an open-source library, may I humbly suggest one of my own creation?
The metadata-extractor project has been alive and well since 2002 for Java, and is now available for .NET.
- Open source (Apache 2.0)
- Heavily tested and widely used
- Supports many image types (JPEG, TIFF, PNG, WebP, GIF, BMP, ICO, PCX...)
- Supports many metadata types (Exif, IPTC, XMP, JFIF, ...)
- Supports many manufacturer-specific fields (Canon, Nikon, ...)
- Very fast (fully processes ~400 images totalling 1.33GB in ~3 seconds) with low memory consumption
- Builds for .NET 3.5, .NET 4.0+ and PCL
It's available via NuGet or GitHub.
Sample usage:
IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path);
foreach (var directory in directories)
foreach (var tag in directory.Tags)
Console.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}");
If you're compiling against v3 of the Framework (or later), then you can load the images using the BitmapSource
class, which exposes the EXIF metadata through the Metadata
property
A new and very fast library is ExifLib - A Fast Exif Data Extractor for .NET 2.0 by Simon McKenzie. I ended up using this one and the code is easy to use and understand. I used it for an app to rename according to the date taken. I wonder how many times such an app has been written.
My tip: Make sure to call Dispose on the ExifReader objects once you've finished with them or the files remain open.