Skip to content

Instantly share code, notes, and snippets.

@simonharrer
Created December 27, 2011 21:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simonharrer/1525101 to your computer and use it in GitHub Desktop.
Save simonharrer/1525101 to your computer and use it in GitHub Desktop.
Reading Image Metadata from an image file
package de.feki.layout.timeinserter;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Node;
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("testpic/source_0001.jpg");
ImageReader reader = ImageIO.getImageReadersByFormatName("jpeg").next();
reader.setInput(ImageIO.createImageInputStream(file));
IIOMetadata metadata = reader.getImageMetadata(0);
for (String object : metadata.getMetadataFormatNames()) {
if (object != null) {
System.out.println(object);
Node node = metadata.getAsTree(object);
System.out.println(xmlToString(node));
}
}
}
public static String xmlToString(Node node) {
try {
Source source = new DOMSource(node);
StringWriter stringWriter = new StringWriter();
Result result = new StreamResult(stringWriter);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
return stringWriter.getBuffer().toString();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment