# javax.imageio.metadata

***

**1. Getting metadata from an image**

```java
import javax.imageio.ImageIO;
import javax.imageio.metadata.IIOMetadata;
import java.awt.image.BufferedImage;
import java.io.File;

public class GetMetadata {

    public static void main(String[] args) throws Exception {
        // Read the image
        BufferedImage image = ImageIO.read(new File("image.jpg"));

        // Get the metadata
        IIOMetadata metadata = ImageIO.getImageMetadata(image);

        // Print the metadata
        System.out.println(metadata);
    }
}
```

**2. Setting metadata for an image**

```java
import javax.imageio.ImageIO;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import java.awt.image.BufferedImage;
import java.io.File;

public class SetMetadata {

    public static void main(String[] args) throws Exception {
        // Read the image
        BufferedImage image = ImageIO.read(new File("image.jpg"));

        // Get the metadata
        IIOMetadata metadata = ImageIO.getImageMetadata(image);

        // Create a new metadata node
        IIOMetadataNode node = new IIOMetadataNode("iptc");

        // Add a new child node
        IIOMetadataNode childNode = new IIOMetadataNode("Keywords");
        childNode.setAttribute("value", "keyword1, keyword2");
        node.appendChild(childNode);

        // Set the new metadata
        metadata.mergeTree("javax_iptc_1.0", node);

        // Write the image with the new metadata
        ImageIO.write(image, "jpg", new File("image_with_metadata.jpg"));
    }
}
```

**3. Reading EXIF metadata from an image**

```java
import javax.imageio.ImageIO;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import java.awt.image.BufferedImage;
import java.io.File;

public class ReadExifMetadata {

    public static void main(String[] args) throws Exception {
        // Read the image
        BufferedImage image = ImageIO.read(new File("image.jpg"));

        // Get the metadata
        IIOMetadata metadata = ImageIO.getImageMetadata(image);

        // Get the EXIF metadata
        IIOMetadataNode exif = (IIOMetadataNode) metadata.getAsTree("ExifIFD");

        // Print the EXIF metadata
        System.out.println(exif);
    }
}
```

**4. Writing EXIF metadata to an image**

```java
import javax.imageio.ImageIO;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import java.awt.image.BufferedImage;
import java.io.File;

public class WriteExifMetadata {

    public static void main(String[] args) throws Exception {
        // Read the image
        BufferedImage image = ImageIO.read(new File("image.jpg"));

        // Get the metadata
        IIOMetadata metadata = ImageIO.getImageMetadata(image);

        // Get the EXIF metadata
        IIOMetadataNode exif = (IIOMetadataNode) metadata.getAsTree("ExifIFD");

        // Create a new child node
        IIOMetadataNode childNode = new IIOMetadataNode("ExposureTime");
        childNode.setAttribute("value", "1/100");
        exif.appendChild(childNode);

        // Set the new metadata
        metadata.mergeTree("ExifIFD", exif);

        // Write the image with the new metadata
        ImageIO.write(image, "jpg", new File("image_with_exif_metadata.jpg"));
    }
}
```

**5. Reading IPTC metadata from an image**

```java
import javax.imageio.ImageIO;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import java.awt.image.BufferedImage;
import java.io.File;

public class ReadIptcMetadata {

    public static void main(String[] args) throws Exception {
        // Read the image
        BufferedImage image = ImageIO.read(new File("image.jpg"));

        // Get the metadata
        IIOMetadata metadata = ImageIO.getImageMetadata(image);

        // Get the IPTC metadata
        IIOMetadataNode iptc = (IIOMetadataNode) metadata.getAsTree("javax_iptc_1.0");

        // Print the IPTC metadata
        System.out.println(iptc);
    }
}
```

**6. Writing IPTC metadata to an image**

```java
import javax.imageio.ImageIO;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import java.awt.image.BufferedImage;
import java.io.File;

public class WriteIptcMetadata {

    public static void main(String[] args) throws Exception {
        // Read the image
        BufferedImage image = ImageIO.read(new File("image.jpg"));

        // Get the metadata
        IIOMetadata metadata = ImageIO.getImageMetadata(image);

        // Get the IPTC metadata
        IIOMetadataNode iptc = (IIOMetadataNode) metadata.getAsTree("javax_iptc_1.0");

        // Create a new child node
        IIOMetadataNode childNode = new IIOMetadataNode("Keywords");
        childNode.setAttribute("value", "keyword1, keyword2");
        iptc.appendChild(childNode);

        // Set the new metadata
        metadata.mergeTree("javax_iptc_1.0", iptc);

        // Write the image with the new metadata
        ImageIO.write(image, "jpg", new File("image_with_iptc_metadata.jpg"));
    }
}
```

**7. Reading XMP metadata from an image**

```java
import javax.imageio.ImageIO;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import java.awt.image.BufferedImage;
import java.io.File;

public class ReadXmpMetadata {

    public static void main(String[] args) throws Exception {
        // Read the image
        BufferedImage image = ImageIO.read(new File("image.jpg"));

        // Get the metadata
        IIOMetadata metadata = ImageIO.getImageMetadata(image);

        // Get the XMP metadata
        IIOMetadataNode xmp = (IIOMetadataNode) metadata.getAsTree("http://ns.adobe.com/xap/1.0/");

        // Print the XMP metadata
        System.out.println(xmp);
    }
}
```

**8. Writing XMP metadata to an image**

```java
import javax.imageio.ImageIO;
import javax

```
