---
title: "IptcDictionary Class"
canonical: https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_Codecs_IptcDictionary.htm
product: "Graphics Mill 5.5 for .NET"
---

This documentation is for the old version. [Go to the latest Graphics Mill docs](https://www.graphicsmill.com/docs/gm/)

# IptcDictionary Class
 
This class represents a dictionary of IPTC fields.
 
**Namespace:** [Aurigma.GraphicsMill.Codecs](https://www.graphicsmill.com/docs/gm5/N_Aurigma_GraphicsMill_Codecs.htm.md)
 **Assembly:** Aurigma.GraphicsMill (in Aurigma.GraphicsMill.dll)
 
## Syntax
  
```
Public Class IptcDictionary _Inherits MetadataDictionary
```
 
```csharp
public class IptcDictionary : MetadataDictionary
```
 
## Remarks
  
All functionality of this class is implemented in base class [MetadataDictionary](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_Codecs_MetadataDictionary.htm.md). To put or get some IPTC field, you should use the [Item\[Object\]](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_Codecs_MetadataDictionary_Item_1_d02429b3.htm.md) property. Just pass ID of the IPTC field as an argument into this property. Refer [IPTC specification](http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf) for exact field ID values. Alternatively you can use static members [Caption](https://www.graphicsmill.com/docs/gm5/F_Aurigma_GraphicsMill_Codecs_IptcDictionary_Caption.htm.md), [Writer](https://www.graphicsmill.com/docs/gm5/F_Aurigma_GraphicsMill_Codecs_IptcDictionary_Writer.htm.md), [Keyword](https://www.graphicsmill.com/docs/gm5/F_Aurigma_GraphicsMill_Codecs_IptcDictionary_Keyword.htm.md), and others. Exact interpretations of these parameters can be found at [IPTC specification](http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf). 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\]](https://www.graphicsmill.com/docs/gm5/P_Aurigma_GraphicsMill_Codecs_MetadataDictionary_Item_1_d02429b3.htm.md), 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.
 
```
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)

'...
```
 
```csharp
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
  
- [System.Object](http://msdn2.microsoft.com/en-us/e5kfa45b)
    - [Aurigma.GraphicsMill.LockableObject](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_LockableObject.htm.md)
        - [Aurigma.GraphicsMill.Codecs.MetadataDictionary](https://www.graphicsmill.com/docs/gm5/T_Aurigma_GraphicsMill_Codecs_MetadataDictionary.htm.md)
            - Aurigma.GraphicsMill.Codecs.IptcDictionary
 
## 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

- [IptcDictionary Members](https://www.graphicsmill.com/docs/gm5/AllMembers_T_Aurigma_GraphicsMill_Codecs_IptcDictionary.htm.md)
- [Aurigma.GraphicsMill.Codecs Namespace](https://www.graphicsmill.com/docs/gm5/N_Aurigma_GraphicsMill_Codecs.htm.md)
