AdobeResourceDictionary Class

Represents a dictionary of Adobe® image resource blocks, each block is represented by the AdobeResourceBlock class.

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


public sealed class AdobeResourceDictionary : MetadataDictionary, ICloneable


Adobe® applications (first of all Adobe® Photoshop®) store meta-information in so called Adobe® image resource blocks. Graphics Mill provides the AdobeResourceDictionary class to facilitate work with these data.

All functionality of this class is implemented in base class MetadataDictionary. To put or get some Adobe® image resource block, you should use the Item[Object] property. Just pass ID of the Adobe® image resource block as an argument into this property. Refer Adobe® Photoshop® File Formats Specification for exact Adobe® image resource block ID values.


The following code removes the thumbnail from Adobe image resource blocks and marks the image as copyrighted. Thumbnail block ID is 0x0409 and copyright flag ID is 0x040A.

using (var reader = new JpegReader(@"Images\in.jpg"))
    // Open reader on the file you need to modify metadata for  
    var adobeResources = reader.AdobeResources;
    if (adobeResources == null)
        adobeResources = new AdobeResourceDictionary();

    // Create new adobe image resource block with the required metadata
    var arBlock = new AdobeResourceBlock("Copyright", new byte[] { 1 });
    // Set this block to the item with 0x040A ID (copyright flag)
    adobeResources[0x040A] = arBlock;
    // Remove a block with 0x0409 (thumbnail data)

    // Write new image and metadata
    using (var writer = new JpegWriter(@"Images\out.jpg"))
        writer.AdobeResources = adobeResources;
        Pipeline.Run(reader + writer);

Inheritance Hierarchy

L Aurigma.GraphicsMill.Codecs.MetadataDictionary
L Aurigma.GraphicsMill.Codecs.AdobeResourceDictionary

Thread Safety

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

See Also