Monday, July 27, 2009

Getting Image meta data using image File path

the following method return list of metadata info


public static List> readMetaData(String file) {
try {

// Crating image reader for given image.
IFormatReader reader = new ImageReader();

reader.setMetadataFiltered(true);
reader.setOriginalMetadataPopulated(true);

//Passing image path to reader.
reader.setId(file);

List> result = new ArrayList>();

// Extracting core Metadata.
ArrayList coreMataData = new ArrayList();
// Core Mata Data
coreMataData.add(new ImageMatadata("Image Count", reader
.getImageCount()));
coreMataData.add(new ImageMatadata("RGB", reader.isRGB() + " ("
+ reader.getRGBChannelCount() + ")"));
coreMataData.add(new ImageMatadata("Interleaved", reader
.isInterleaved()));
coreMataData.add(new ImageMatadata("Indexed", reader.isIndexed()));
coreMataData.add(new ImageMatadata("Width", reader.getSizeX()));
coreMataData.add(new ImageMatadata("Height", reader.getSizeY()));
coreMataData.add(new ImageMatadata("SizeZ", reader.getSizeZ()));
coreMataData.add(new ImageMatadata("SizeT", reader.getSizeC()));
coreMataData.add(new ImageMatadata("SizeC", reader.getSizeT()));
coreMataData.add(new ImageMatadata("Thumbnail size", reader
.getThumbSizeX()
+ " x " + reader.getThumbSizeY()));
coreMataData.add(new ImageMatadata("Endianness", reader
.isLittleEndian() ? "intel (little)" : "motorola (big)"));
coreMataData
.add(new ImageMatadata("Dimension order", reader
.getDimensionOrder()
+ (reader.isOrderCertain() ? " (certain)"
: " (uncertain)")));
coreMataData.add(new ImageMatadata("Pixel type", FormatTools
.getPixelTypeString(reader.getPixelType())));
coreMataData.add(new ImageMatadata("Metadata complete", reader
.isMetadataComplete()));
coreMataData.add(new ImageMatadata("Thumbnail series", reader
.isThumbnailSeries()));

result.add(coreMataData);

// Extracting Format Specific Data

ArrayList formatSpecificMeta = new ArrayList();

Hashtable formatMeta = reader.getMetadata();

if (formatSpecificMeta != null && formatMeta.size() > 0) {
Enumeration keys = formatMeta.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
formatSpecificMeta.add(new ImageMatadata(key, formatMeta
.get(key)));

}
}
result.add(formatSpecificMeta);

return result;

} catch (FormatException e) {

logger.debug("Problem in getting matadata ", e);
} catch (IOException e) {
logger.debug("Problem in getting matadata ", e);
}

return null;
}


ImageMatadata .java:

public class ImageMatadata implements Serializable{

private String name;

private Object value;

public ImageMatadata(String name, Object value) {
this.name = name;
this.value = value;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Object getValue() {
return value;
}

public void setValue(Object value) {
this.value = value;
}

}

No comments: