net.sourceforge.vyasa.metadata
Class ImageMetadataDiscoverer

java.lang.Object
  extended by net.sourceforge.vyasa.metadata.ImageMetadataDiscoverer

public class ImageMetadataDiscoverer
extends Object

A static class that discovers image metadata.

Author:
Fred Eaker (fredeaker@gmail.com)

Field Summary
private static IIOMetadata iioMetadata
          Image metadata.
private static ImageInputStream imageInputStream
          Created when the getImageMetadata(Object) method is called.
private static String[] metadataFormatNames
          An array of Strings containing the names of all metadata formats recognized by IIOMetadata.
private static Map<String,String> metadataMap
          Contains all of the fields and values availble from IIOMetadata.
private static int numberOfImages
          The number of images in an ImageReader.
 
Constructor Summary
private ImageMetadataDiscoverer()
          Private constructor prevents public instantiation.
 
Method Summary
private static void discoverDrewNoakesMetadata(Object object)
          Uses ImageMetadataReader to discover Exif and Iptc metadata in Jpeg files.
private static void discoverImageIOMetadata()
          Generates image metadata with the ImageIO library.
private static void discoverImageMetadata(ImageReader imageReader, int imageIndex)
          Begins the process of populating metadataMap with values captured by the ImageReader.getImageMetadata(int) method.
private static void discoverImageReaderMetadata(ImageReader imageReader, int imageIndex)
          Populates metadataMap with a few standard metadata fields from the ImageReader class.
private static void discoverJpegMetadata(Metadata metadata)
          Populates metadataMap with metadata captured by the Metadata class.
private static void discoverStreamMetadata(ImageReader imageReader)
          Begins the process of populating metadataMap with values captured by the ImageReader.getStreamMetadata() method.
private static void discoverThumbnailMetadata(ImageReader imageReader, int imageIndex)
          Populates metadataMap with thumbnail metadata.
static Map<String,String> getImageMetadata(Object object)
          Returns metadata in a Map.
private static void parseMetadata(Node metadataNode)
          Populates metadataMap by recursivly traversing a Node.
private static void setNumberOfImages(ImageReader imageReader)
          Sets numberOfImages.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

imageInputStream

private static ImageInputStream imageInputStream
Created when the getImageMetadata(Object) method is called.


metadataMap

private static Map<String,String> metadataMap
Contains all of the fields and values availble from IIOMetadata.


iioMetadata

private static IIOMetadata iioMetadata
Image metadata.


metadataFormatNames

private static String[] metadataFormatNames
An array of Strings containing the names of all metadata formats recognized by IIOMetadata.


numberOfImages

private static int numberOfImages
The number of images in an ImageReader.

Constructor Detail

ImageMetadataDiscoverer

private ImageMetadataDiscoverer()
Private constructor prevents public instantiation.

Method Detail

getImageMetadata

public static Map<String,String> getImageMetadata(Object object)
                                           throws IOException
Returns metadata in a Map.

Attempts to create an ImageInputStream with ImageIO.createImageInputStream(Object).

Parameters:
object - to create as an ImageInputStream
Returns:
Map of metadata fields (keys) and values.
Throws:
IOException
See Also:
ImageIO

discoverImageIOMetadata

private static void discoverImageIOMetadata()
Generates image metadata with the ImageIO library.


setNumberOfImages

private static void setNumberOfImages(ImageReader imageReader)
Sets numberOfImages. This process is contained in a seperate method to allow performance tweaks.

Parameters:
imageReader - from ImageIO.getImageReaders(Object)
See Also:
ImageReader.getNumImages(boolean)

discoverStreamMetadata

private static void discoverStreamMetadata(ImageReader imageReader)
Begins the process of populating metadataMap with values captured by the ImageReader.getStreamMetadata() method.

Parameters:
imageReader - from ImageIO.getImageReaders(Object)

discoverImageReaderMetadata

private static void discoverImageReaderMetadata(ImageReader imageReader,
                                                int imageIndex)
Populates metadataMap with a few standard metadata fields from the ImageReader class.

Parameters:
imageReader - from ImageIO.getImageReaders(Object)
imageIndex - based on ImageReader.getNumImages(boolean)

discoverThumbnailMetadata

private static void discoverThumbnailMetadata(ImageReader imageReader,
                                              int imageIndex)
Populates metadataMap with thumbnail metadata.

Parameters:
imageReader - from ImageIO.getImageReaders(Object)
imageIndex - based on ImageReader.getNumImages(boolean)

discoverImageMetadata

private static void discoverImageMetadata(ImageReader imageReader,
                                          int imageIndex)
Begins the process of populating metadataMap with values captured by the ImageReader.getImageMetadata(int) method.

Parameters:
imageReader - from ImageIO.getImageReaders(Object)
imageIndex - based on ImageReader.getNumImages(boolean)

parseMetadata

private static void parseMetadata(Node metadataNode)
Populates metadataMap by recursivly traversing a Node.

Parameters:
metadataNode - the node to parse
See Also:
Handling Metadata, IIOMetadataNode

discoverDrewNoakesMetadata

private static void discoverDrewNoakesMetadata(Object object)
Uses ImageMetadataReader to discover Exif and Iptc metadata in Jpeg files.

Parameters:
object - must be a File or InputStream
See Also:

discoverJpegMetadata

private static void discoverJpegMetadata(Metadata metadata)
Populates metadataMap with metadata captured by the Metadata class.

Parameters:
metadata - to map