This documentation is for the old version. Go to the latest Graphics Mill docs

IptcDictionary Class

This class represents a dictionary of IPTC fields.

Namespace: Aurigma.GraphicsMill.Codecs
Assembly: Aurigma.GraphicsMill (in Aurigma.GraphicsMill.dll)

Syntax

Visual Basic
Public Class IptcDictionary _
	Inherits MetadataDictionary
C#
public class IptcDictionary : MetadataDictionary

Remarks

All functionality of this class is implemented in base class MetadataDictionary. To put or get some IPTC field, you should use the Item[Object] property. Just pass ID of the IPTC field as an argument into this property. Refer IPTC specification for exact field ID values. Alternatively you can use static members Caption, Writer, Keyword, and others. Exact interpretations of these parameters can be found at IPTC specification. Currently specification 4.1 is supported.

IPTC tags consist of two numbers. For example, "2:25" means "Keywords". To be able to pass these numbers into Item[Object], you should pack them as follows: first byte stores the second number (25 in this example), the second byte stores the first number (2 in this example). Other two bytes are not used.

Examples

The code below demonstrates how to extract and display both EXIF and IPTC data.

Visual Basic
Dim bitmap As New Aurigma.GraphicsMill.Bitmap

'Read bitmap and metadata
Dim jpegReader As New Aurigma.GraphicsMill.Codecs.JpegReader("C:\IMG_0001.jpg")

'Read metadata
Dim exif As Aurigma.GraphicsMill.Codecs.ExifDictionary = jpegReader.Exif
Dim iptc As Aurigma.GraphicsMill.Codecs.IptcDictionary = jpegReader.Iptc

'Read bitmap
Dim frame As Aurigma.GraphicsMill.Codecs.Frame = jpegReader.LoadFrame(0)
frame.GetBitmap(bitmap)

frame.Dispose()

jpegReader.Dispose()

'Show EXIF tags
If Not exif Is Nothing Then
    Console.WriteLine("EXIF")
    Console.WriteLine("---------------")
    For Each key As Long In exif.Keys
        Console.WriteLine("{0}: {1}, {2}", exif.GetKeyDescription(key), _
         exif.Item(key), exif.GetItemString(key))
    Next
End If

'Show IPTC tags
If Not iptc Is Nothing Then
    Console.WriteLine("IPTC")
    Console.WriteLine("---------------")
    For Each key As Long In iptc.Keys
        Console.WriteLine("{0}: {1}, {2}", iptc.GetKeyDescription(key), _
         iptc.Item(key), iptc.GetItemString(key))
    Next
End If

'Process bitmap...
bitmap.Transforms.RotateAndFlip(System.Drawing.RotateFlipType.Rotate90FlipNone)

'...
C#
using (Aurigma.GraphicsMill.Bitmap bitmap =
    new Aurigma.GraphicsMill.Bitmap())
{
    //Read bitmap and metadata
    Aurigma.GraphicsMill.Codecs.ExifDictionary exif = null;
    Aurigma.GraphicsMill.Codecs.IptcDictionary iptc = null;

    using (Aurigma.GraphicsMill.Codecs.JpegReader jpegReader =
        new Aurigma.GraphicsMill.Codecs.JpegReader(@"C:\IMG_0001.jpg"))
    {
        //Read metadata
        exif = jpegReader.Exif;
        iptc = jpegReader.Iptc;

        //Read bitmap
        using (Aurigma.GraphicsMill.Codecs.IFrame frame = jpegReader.LoadFrame(0))
        {
            frame.GetBitmap(bitmap);
        }
    }
    //Show EXIF tags
    if (exif != null)
    {
        Console.WriteLine("EXIF");
        Console.WriteLine("---------------");
        foreach (long key in exif.Keys)
        {
            Console.WriteLine("{0}: {1}, {2}", exif.GetKeyDescription(key),
                exif[key], exif.GetItemString(key));
        }
    }

    //Show IPTC tags
    if (iptc != null)
    {
        Console.WriteLine("IPTC");
        Console.WriteLine("---------------");
        foreach (long key in iptc.Keys)
        {
            Console.WriteLine("{0}: {1}, {2}", iptc.GetKeyDescription(key),
                iptc[key], iptc.GetItemString(key));
        }
    }

    //Process bitmap...
    bitmap.Transforms.RotateAndFlip(System.Drawing.RotateFlipType.Rotate90FlipNone);

    //...
}

Inheritance Hierarchy

Thread Safety

Static members of this type are safe for multi-threaded operations. Instance members of this type are safe for multi-threaded operations.

See Also

Reference