Table of Contents

ExifDictionary Class

Definition

Namespace
GleamTech.ImageUltimate
Assembly
GleamTech.ImageUltimate.dll

Represents a dictionary of EXIF entries.

public sealed class ExifDictionary : IMetadataDictionary<ExifTag, ExifEntry>, IEnumerable<ExifEntry>, IEnumerable
Inheritance
ExifDictionary
Implements

Examples

//Load image info of "c:\SomeFolder\InputFile.png"
using (var imageInfo = new ImageInfo(@"c:\SomeFolder\InputFile.png"))
{
}

//---------------------------------------

//Load with a virtual path string:
//See below for other path string examples.
using (var imageInfo = new ImageInfo("~/SomeFolder/InputFile.png"))
{
}

//Load with a URL string:
//See below for other path string examples.
using (var imageInfo = new ImageInfo("http://example.com/SomeFolder/InputFile.png"))
{
}

//Load with a Data URL string:
//See below for other path string examples.
using (var imageInfo = new ImageInfo("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"))
{
}

//Load with a file provider instance:
//See below for other file provider examples (UNC Path, AmazonS3, AzureBlob, Database etc.).
var fileProvider = new FileSystemFileProvider
{
    File = "InputFile.png",
    Location = new PhysicalLocation
    {
        Path = @"c:\SomeFolder"
    }
};
using (var imageInfo = new ImageInfo(fileProvider))
{
}

//Load with a provider string:
//See below for other provider string examples (UNC Path, AmazonS3, AzureBlob, Database etc.).
using (var imageInfo = new ImageInfo(@"Type=FileSystem; File=InputFile.png; Location='Type=Physical; Path=c:\SomeFolder'"))
{
}
'Load image info of "c:\SomeFolder\InputFile.png"
Using imageInfo As New ImageInfo("c:\SomeFolder\InputFile.png")
End Using

'---------------------------------------

'Load with a virtual path string:
'See below for other path string examples.
Using imageInfo As New ImageInfo("~/SomeFolder/InputFile.png")
End Using

'Load with a URL string:
'See below for other path string examples.
Using imageInfo As New ImageInfo("http://example.com/SomeFolder/InputFile.png")
End Using

'Load with a Data URL string:
'See below for other path string examples.
Using imageInfo As New ImageInfo("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")
End Using

'Load with a file provider instance:
'See below for other file provider examples (UNC Path, AmazonS3, AzureBlob, Database etc.).
Dim fileProvider As New FileSystemFileProvider() With {
    .File = "InputFile.png",
    .Location = New PhysicalLocation() With {
        .Path = "c:\SomeFolder"
    }
}
Using imageInfo As New ImageInfo(fileProvider)
End Using

'Load with a provider string:
'See below for other provider string examples (UNC Path, AmazonS3, AzureBlob, Database etc.).
Using imageInfo As New ImageInfo("Type=FileSystem; File=InputFile.png; Location='Type=Physical; Path=c:\SomeFolder'")
End Using

//Show all image info including EXIF and IPTC metadata
using (var imageInfo = new ImageInfo(@"C:\Input\Picture1.jpg"))
{
    Console.WriteLine("Info:");
    Console.WriteLine("----------------------------");
    Console.WriteLine("Format: " + imageInfo.Format);
    Console.WriteLine("Width: " + imageInfo.Width);
    Console.WriteLine("Height: " + imageInfo.Height);
    Console.WriteLine("ResolutionX: " + imageInfo.ResolutionX);
    Console.WriteLine("ResolutionY: " + imageInfo.ResolutionY);
    Console.WriteLine("ColorSpace: " + imageInfo.ColorSpace);
    Console.WriteLine("ColorType: " + imageInfo.ColorType);
    Console.WriteLine("BitDepth: " + imageInfo.BitDepth);
    Console.WriteLine("HasAlpha: " + imageInfo.HasAlpha);
    Console.WriteLine("ChannelCount: " + imageInfo.ChannelCount);

    Console.WriteLine();
    Console.WriteLine("Exif:");
    Console.WriteLine("----------------------------");
    foreach (var entry in imageInfo.ExifDictionary)
    {
        Console.WriteLine("Tag: " + entry.Tag);
        Console.WriteLine("Value: " + entry.Value);
        Console.WriteLine("Description: " + entry.Tag.Description);
        Console.WriteLine();
    }

    Console.WriteLine();
    Console.WriteLine("Iptc:");
    Console.WriteLine("----------------------------");
    foreach (var entry in imageInfo.IptcDictionary)
    {
        Console.WriteLine("Tag: " + entry.Tag);
        Console.WriteLine("Value: " + entry.Value);
        Console.WriteLine("Description: " + entry.Tag.Description);
        Console.WriteLine();
    }
}
'Show all image info including EXIF and IPTC metadata
Using imageInfo As New ImageInfo("C:\Pictures\Picture1.jpg")
    Console.WriteLine("Info:")
    Console.WriteLine("----------------------------")
    Console.WriteLine("Format: " + imageInfo.Format)
    Console.WriteLine("Width: " + imageInfo.Width)
    Console.WriteLine("Height: " + imageInfo.Height)
    Console.WriteLine("ResolutionX: " + imageInfo.ResolutionX)
    Console.WriteLine("ResolutionY: " + imageInfo.ResolutionY)
    Console.WriteLine("ColorSpace: " + imageInfo.ColorSpace)
    Console.WriteLine("ColorType: " + imageInfo.ColorType)
    Console.WriteLine("BitDepth: " + imageInfo.BitDepth)
    Console.WriteLine("HasAlpha: " + imageInfo.HasAlpha)
    Console.WriteLine("ChannelCount: " + imageInfo.ChannelCount)

    Console.WriteLine()
    Console.WriteLine("Exif:")
    Console.WriteLine("----------------------------")
    For Each entry In imageInfo.ExifDictionary
        Console.WriteLine("Tag: " + entry.Tag.ToString())
        Console.WriteLine("Value: " + entry.Value)
        Console.WriteLine("Description: " + entry.Tag.Description)
        Console.WriteLine()
    Next

    Console.WriteLine()
    Console.WriteLine("Iptc:")
    Console.WriteLine("----------------------------")
    For Each entry In imageInfo.IptcDictionary
        Console.WriteLine("Tag: " + entry.Tag.ToString())
        Console.WriteLine("Value: " + entry.Value)
        Console.WriteLine("Description: " + entry.Tag.Description)
        Console.WriteLine()
    Next
End Using

//Modifying EXIF metadata:
using (var imageTask = new ImageTask(@"C:\Input\Picture1.jpg"))
{
    imageTask.Info.ExifDictionary.Remove(ExifTag.Image.Software);
    imageTask.Info.ExifDictionary.Set(ExifTag.Image.Artist, "UPDATED Artist TAG");

    imageTask.Info.IptcDictionary.Remove(IptcTag.Application2.Byline);
    imageTask.Info.IptcDictionary.Set(IptcTag.Application2.ObjectName, "UPDATED ObjectName TAG");

    imageTask.Save(@"C:\Output\Picture2.jpg");
}
'Modifying EXIF metadata:
Using imageTask = New ImageTask("C:\Input\Picture1.jpg")
    imageTask.Info.ExifDictionary.Remove(ExifTag.Image.Software)
    imageTask.Info.ExifDictionary.Set(ExifTag.Image.Artist, "UPDATED Artist TAG")

    imageTask.Info.IptcDictionary.Remove(IptcTag.Application2.Byline)
    imageTask.Info.IptcDictionary.Set(IptcTag.Application2.ObjectName, "UPDATED ObjectName TAG")

    imageTask.Save("C:\Output\Picture2.jpg")
End Using

Constructors

ExifDictionary()

Initializes a new instance of the ExifDictionary class.

Properties

Count

Gets the number of entries contained in this dictionary.

IsChanged

Gets a value indicating whether this dictionary is changed.

this[ExifTag]

Gets the entry for the specified tag.

Methods

Clear()

Removes all entries from this dictionary.

Contains(ExifTag)

Determines whether this dictionary contains an entry with the specified tag.

GetEnumerator()

Returns an enumerator that iterates through this dictionary.

Remove(ExifTag)

Removes the entry for the specified tag from this dictionary.

Set(ExifTag, object)

Sets the value for the specified tag in this dictionary.

TryGet(ExifTag, out ExifEntry)

Gets the entry associated with the specified tag.