Update JPEG metadata losslessly

JPG Lossless JPEG Read Write Metadata Filesystem

Updates metadata of JPEG image without recompression.

Сode Snippet

using (var losslessJpeg = new LosslessJpeg("Chicago.jpg"))
{
    // IPTC
    if (losslessJpeg.Iptc == null)
    {
        losslessJpeg.Iptc = new IptcDictionary();
    }

    losslessJpeg.Iptc[IptcDictionary.Caption] = "Mountain";

    // EXIF
    if (losslessJpeg.Exif == null)
    {
        losslessJpeg.Exif = new ExifDictionary();
    }

    losslessJpeg.Exif[ExifDictionary.Software] = "Aurigma Graphics Mill";

    // XMP
    var xmp = new XmpData();
    if (losslessJpeg.Xmp != null)
    {
        xmp.Load(losslessJpeg.Xmp);
    }

    var node = new XmpValueNode(XmpNodeType.SimpleProperty, "John Doe", XmpTagNames.DCContributor);
    xmp.AddNode(node);
    losslessJpeg.Xmp = xmp.Save();

    // Adobe image resource blocks
    if (losslessJpeg.AdobeResources == null)
    {
        losslessJpeg.AdobeResources = new AdobeResourceDictionary();
    }

    const int copyrightFlag = 0x040A;

    var arBlock = new AdobeResourceBlock("Copyright", new byte[] { 1 });
    losslessJpeg.AdobeResources[copyrightFlag] = arBlock;

    losslessJpeg.Write("UpdateJpegMetadataLosslessly.jpg");
}

Input

Chicago.jpg

Output

UpdateJpegMetadataLosslessly.jpg

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