Resize And Preserve Metadata

EXIF IPTC Adobe Resources XMP Read Write Resize Pipeline

Resize a JPEG and preserve/update metadata with Aurigma Graphics Mill. Halves width (keeps aspect), updates EXIF Software, adds IPTC keyword, sets Adobe copyright flag, adds XMP dc:contributor, and saves all metadata.

Сode Snippet

using (var jpegReader = new JpegReader("Chicago.jpg"))
using (var resize = new Resize(jpegReader.Width / 2, 0))
using (var jpegWriter = new JpegWriter("ResizeAndPreserveMetadata.jpg"))
{
    // Read EXIF
    var exif = jpegReader.Exif;

    // Check if loaded image contains EXIF metadata
    if (exif == null)
    {
        exif = new ExifDictionary();
    }

    exif[ExifDictionary.Software] = "Aurigma Graphics Mill";

    // Read IPTC
    var iptc = jpegReader.Iptc;

    // Check if loaded image contains IPTC metadata
    if (iptc == null)
    {
        iptc = new IptcDictionary();
    }

    iptc[IptcDictionary.Keyword] = "mountain";

    // Read Adobe resource blocks
    var adobeResources = jpegReader.AdobeResources;

    // Check if loaded image contains Adobe image resource blocks
    if (adobeResources == null)
    {
        adobeResources = new AdobeResourceDictionary();
    }

    // Create new adobe image resource block containing copyright metadata
    var arBlock = new AdobeResourceBlock("Copyright", new byte[] { 1 });

    // Set this block to the item with 0x040A ID (copyright flag)
    adobeResources[0x040A] = arBlock;

    var xmp = new XmpData();

    // Check if loaded image contains XMP metadata
    if (jpegReader.Xmp != null)
    {
        xmp.Load(jpegReader.Xmp);
    }

    // Create a node containing dc:contributor metadata
    var node = new XmpValueNode(XmpNodeType.SimpleProperty, "John Doe", XmpTagNames.DCContributor);
    xmp.AddNode(node);

    // Write metadata
    jpegWriter.Exif = exif;
    jpegWriter.Iptc = iptc;
    jpegWriter.AdobeResources = adobeResources;
    jpegWriter.Xmp = xmp.Save();

Pipeline.Run(jpegReader + resize + jpegWriter);

Input

Chicago.jpg

Output

ResizeAndPreserveMetadata.jpg

For AI-assisted development: Download Graphics Mill Code Samples XML Catalog