Coderanger.ImageInfo 0.3.4

dotnet add package Coderanger.ImageInfo --version 0.3.4                
NuGet\Install-Package Coderanger.ImageInfo -Version 0.3.4                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Coderanger.ImageInfo" Version="0.3.4" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Coderanger.ImageInfo --version 0.3.4                
#r "nuget: Coderanger.ImageInfo, 0.3.4"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Coderanger.ImageInfo as a Cake Addin
#addin nuget:?package=Coderanger.ImageInfo&version=0.3.4

// Install Coderanger.ImageInfo as a Cake Tool
#tool nuget:?package=Coderanger.ImageInfo&version=0.3.4                

Coderanger.ImageInfo

Build and Publish Line Coverage Status Branch Coverage Status

Overview

Coderanger.ImageInfo is a very simple cross-platform dotnet core .netstandard2.1 library that enables you to inspect images and return back their dimensions and metadata.

Supported Formats

Coderanger.ImageInfo is able to decode the dimensions and resolution of the following graphic formats:

  • JPEG
  • PNG
  • WEBP
  • BMP (does not support the storage of metadata)
  • GIF

Metadata Extraction

Coderanger.ImageInfo can also extract metadata with the following profiles:

  • EXIF
  • IPTC
  • PNG Text
  • XMP

Metadata is stored as a Dictionary of Metadata Tag Values against a profile.

It should be noted, however, that XMP data is an exception and is currently stored as a single string Tag Value which contains the unparsed XML, so any parsing of the XMP XML needs to be done outside of this library (for the time being).

Usage

This library is very easy to use; with just a single static method called with an image stream, and the response being either NULL or an ImageDetails record containing properties for the various items of image data:

using var imageStream = new FileStream( "image.jpeg", FileMode.Open, FileAccess.Read );
var imageInfo = ImageInfo.Get( imageStream );

if( imageInfo is not null )
{
  // If imageInfo was decodable, an object is returned with metadata properties
  Debug.WriteLine( $"Width = {imageInfo.Width}" );
  Debug.WriteLine( $"Height = {imageInfo.Height}" );
  Debug.WriteLine( $"Horizontal DPI = {imageInfo.HorizontalResolution}" );
  Debug.WriteLine( $"Vertical DPI = {imageInfo.VerticalResolution}" );
  Debug.WriteLine( $"Mime = {imageInfo.MimeType}" );

  // If there is any metadata in the image, the 'Tags' property
  // will contain the info as a dictionary of profile tag lists

  // For example, the following will output the tags in the 'Exif' profile
  if( imageInfo.Metadata?.TryGetValue( MetadataProfileType.Exif, out var tags ) ?? false && tags is not null )
  {
    foreach( var tag in tags )
    {
      if( tag is not null && tag.HasValue )
      {
        if( tag.TryGetValue( out var metadataValue ) && metadataValue is not null )
        {
          Debug.WriteLine( $"{metadataValue.TagName} = {metadataValue.Value}" );
        }
      }
    }
  }
}

How can you help?

Contributions are welcome; even if it is just additional test images for subtypes of an image format so that the test suite can be increased.

Find out more on our how to contribute.

Licence

Coderanger.ImageInfo is licensed under the MIT Licence.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.1

    • No dependencies.

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
0.3.4 3,422 2/7/2022