Plugin.Maui.Exif
1.0.0-preview1
See the version list below for details.
dotnet add package Plugin.Maui.Exif --version 1.0.0-preview1
NuGet\Install-Package Plugin.Maui.Exif -Version 1.0.0-preview1
<PackageReference Include="Plugin.Maui.Exif" Version="1.0.0-preview1" />
<PackageVersion Include="Plugin.Maui.Exif" Version="1.0.0-preview1" />
<PackageReference Include="Plugin.Maui.Exif" />
paket add Plugin.Maui.Exif --version 1.0.0-preview1
#r "nuget: Plugin.Maui.Exif, 1.0.0-preview1"
#:package Plugin.Maui.Exif@1.0.0-preview1
#addin nuget:?package=Plugin.Maui.Exif&version=1.0.0-preview1&prerelease
#tool nuget:?package=Plugin.Maui.Exif&version=1.0.0-preview1&prerelease
Plugin.Maui.Exif
Plugin.Maui.Exif provides the ability to read EXIF metadata from image files in your .NET MAUI application across iOS, Android, and Windows platforms.
Features
- Read EXIF metadata from image files and streams
- Extract common metadata like camera make/model, date taken, GPS coordinates, camera settings
- Cross-platform support (iOS, macOS Catalyst, Android, Windows)
- Easy-to-use API with both static and dependency injection patterns
- Extension methods for common EXIF data operations
Installation
<PackageReference Include="Plugin.Maui.Exif" Version="1.0.0" />
Usage
Basic Usage
// Using the static API
var exifData = await Exif.Default.ReadFromFileAsync(imagePath);
// Using dependency injection
builder.Services.AddSingleton<IExif>(Exif.Default);
// In your class
public MainPage(IExif exif)
{
var exifData = await exif.ReadFromFileAsync(imagePath);
}
Reading EXIF Data
var exifData = await Exif.Default.ReadFromFileAsync("path/to/image.jpg");
if (exifData != null)
{
// Basic image info
Console.WriteLine($"Camera: {exifData.Make} {exifData.Model}");
Console.WriteLine($"Date taken: {exifData.DateTaken}");
Console.WriteLine($"Dimensions: {exifData.Width}x{exifData.Height}");
// Camera settings
Console.WriteLine($"F-number: f/{exifData.FNumber}");
Console.WriteLine($"Exposure time: {exifData.ExposureTime}s");
Console.WriteLine($"ISO: {exifData.Iso}");
Console.WriteLine($"Focal length: {exifData.FocalLength}mm");
// GPS coordinates
if (exifData.HasGpsCoordinates())
{
Console.WriteLine($"Location: {exifData.Latitude}, {exifData.Longitude}");
Console.WriteLine($"Altitude: {exifData.Altitude}m");
}
}
Reading from Stream
using var stream = File.OpenRead("path/to/image.jpg");
var exifData = await Exif.Default.ReadFromStreamAsync(stream);
Extension Methods
The plugin includes useful extension methods:
// Check if GPS coordinates are available
if (exifData.HasGpsCoordinates())
{
// Get formatted GPS string
var coordinates = exifData.GetFormattedGpsCoordinates();
// Result: "37.421998°N, 122.084000°W"
}
// Get formatted camera settings
var settings = exifData.GetFormattedCameraSettings();
// Result: "f/2.2, 1/120s, ISO 100, 24mm"
// Get camera information
var camera = exifData.GetCameraInfo();
// Result: "Apple iPhone 12 Pro"
// Check if image needs rotation
if (exifData.NeedsRotation())
{
var angle = exifData.GetRotationAngle();
// Rotate the image by the returned angle
}
Available EXIF Properties
Basic Image Information
Width/Height- Image dimensionsOrientation- Image orientationDateTaken- Date and time the photo was taken
Camera Information
Make- Camera manufacturerModel- Camera modelSoftware- Software used to process the image
Camera Settings
FNumber- Aperture f-numberExposureTime- Shutter speed in secondsIso- ISO sensitivityFocalLength- Focal length in millimetersFlash- Flash mode used
GPS Information
Latitude- GPS latitudeLongitude- GPS longitudeAltitude- GPS altitude in meters
Additional Information
Copyright- Copyright informationArtist- Photographer/artist nameImageDescription- Image description or commentAllTags- Dictionary containing all available EXIF tags
Platform Support
| Platform | Supported | Implementation |
|---|---|---|
| iOS | ✅ | ImageIO Framework |
| macOS Catalyst | ✅ | ImageIO Framework |
| Android | ✅ | AndroidX ExifInterface |
| Windows | ✅ | Windows Runtime BitmapDecoder |
Permissions
Android
Add the following permissions to your AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
iOS
No special permissions required for reading EXIF data from files accessible to your app.
Windows
No special permissions required.
Sample App
The repository includes a sample app demonstrating how to:
- Select images using FilePicker
- Read and display EXIF metadata
- Show formatted camera settings and GPS information
- Display all available EXIF tags
Future Enhancements
- Writing EXIF metadata (planned for future versions)
- Additional metadata formats support
- Batch processing capabilities
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License.
From there, after creating a GitHub release your plugin will be automatically released on NuGet!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-android35.0 is compatible. net9.0-browser was computed. net9.0-ios was computed. net9.0-ios18.0 is compatible. net9.0-maccatalyst was computed. net9.0-maccatalyst18.0 is compatible. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net9.0-windows10.0.19041 is compatible. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Microsoft.Maui.Controls (>= 9.0.51)
-
net9.0-android35.0
- Microsoft.Maui.Controls (>= 9.0.51)
- Xamarin.AndroidX.ExifInterface (>= 1.3.7.9)
-
net9.0-ios18.0
- Microsoft.Maui.Controls (>= 9.0.51)
-
net9.0-maccatalyst18.0
- Microsoft.Maui.Controls (>= 9.0.51)
-
net9.0-windows10.0.19041
- Microsoft.Maui.Controls (>= 9.0.51)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-preview6 | 115 | 5/8/2026 |
| 1.0.0-preview5 | 1,799 | 11/20/2025 |
| 1.0.0-preview4 | 9,900 | 7/23/2025 |
| 1.0.0-preview3 | 138 | 7/18/2025 |
| 1.0.0-preview2 | 224 | 7/3/2025 |
| 1.0.0-preview1 | 164 | 7/3/2025 |