package org.jambula.image; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.Collection; import com.drew.imaging.ImageMetadataReader; import com.drew.metadata.Directory; import com.drew.metadata.Metadata; import com.drew.metadata.Tag; import com.drew.metadata.exif.ExifIFD0Directory; import com.drew.metadata.exif.ExifSubIFDDirectory; import com.drew.metadata.exif.ExifThumbnailDirectory; import com.drew.metadata.jpeg.JpegComponent; import com.drew.metadata.jpeg.JpegDirectory; import com.drew.metadata.xmp.XmpDirectory; public class MetaData { public static void main(String [] args) throws Exception { Metadata metadata = ImageMetadataReader.readMetadata(new File("G:/Temp/deldir/crop.JPG")); Collection xmps = metadata .getDirectoriesOfType(XmpDirectory.class); if (xmps != null) { for (XmpDirectory xmp : xmps) { System.out.println("PROPS:: " + xmp.getXmpProperties()); } } Iterable directories = metadata.getDirectories(); for (Directory dir : directories) { System.out.println("NextDir:: " + dir + " class = " + dir.getClass()); Collection tags = dir.getTags(); for (Tag tag : tags) { System.out.println("Got Tag Type: " + tag.getTagType() + ", name: " + tag.getTagName() + ", desc: " + tag.getDescription() + ", dirName: " + tag.getDirectoryName()); } } JpegDirectory jpegDirectory = metadata.getFirstDirectoryOfType(JpegDirectory.class); if (jpegDirectory != null) { System.out.println("JPEG Image Dim = " + jpegDirectory.getImageWidth() + "x" + jpegDirectory.getImageHeight()); System.out.println("JPEG Comp 1 = " + jpegDirectory.getDescription(JpegDirectory.TAG_COMPONENT_DATA_1)); JpegComponent comp = (JpegComponent) jpegDirectory.getObject(JpegDirectory.TAG_COMPONENT_DATA_1); if (comp != null) { System.out.println("Horiz = " + comp.getHorizontalSamplingFactor() + ", vert = " + comp.getVerticalSamplingFactor()); } } ExifSubIFDDirectory exifSubIFDDirectory = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class); if (exifSubIFDDirectory != null) { System.out.println("EXIF DATE TIME: " + exifSubIFDDirectory.getString(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL)); } ExifIFD0Directory ifd0Directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class); if (exifSubIFDDirectory != null) { System.out.println("EXIF ORIENTATION: " + ifd0Directory.getInt(ExifIFD0Directory.TAG_ORIENTATION)); } ExifThumbnailDirectory thumbnailDirectory = metadata.getFirstDirectoryOfType(ExifThumbnailDirectory.class); if (thumbnailDirectory != null) { byte[] imageData = thumbnailDirectory.getThumbnailData(); OutputStream fop = new FileOutputStream("G:/Temp/deldir/thumbnail.jpg"); fop.write(imageData); fop.close(); } } public static void main2(String [] args) throws Exception { File d = new File("G:/pictures.delete"); File [] files = d.listFiles(); int i, count = 0; for (i = 0; i < files.length; i++) { File f = files[i]; if (f.getName().toLowerCase().endsWith(".jpg")) { count++; Metadata metadata = ImageMetadataReader.readMetadata(f); Collection xmps = metadata .getDirectoriesOfType(XmpDirectory.class); JpegDirectory jpegDirectory = metadata.getFirstDirectoryOfType(JpegDirectory.class); if (jpegDirectory != null) { // System.out.println("JPEG Image Dim = " + jpegDirectory.getImageWidth() + "x" + jpegDirectory.getImageHeight()); // System.out.println("JPEG Comp 1 = " + jpegDirectory.getDescription(JpegDirectory.TAG_COMPONENT_DATA_1)); JpegComponent comp = (JpegComponent) jpegDirectory.getObject(JpegDirectory.TAG_COMPONENT_DATA_1); if (comp != null) { // System.out.println("Horiz = " + comp.getHorizontalSamplingFactor() + ", vert = " + comp.getVerticalSamplingFactor()); } } ExifSubIFDDirectory exifSubIFDDirectory = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class); if (exifSubIFDDirectory != null) { // System.out.println("EXIF DATE TIME: " + exifSubIFDDirectory.getString(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL)); } ExifIFD0Directory ifd0Directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class); if (exifSubIFDDirectory != null) { // System.out.println("EXIF ORIENTATION: " + ifd0Directory.getInt(ExifIFD0Directory.TAG_ORIENTATION)); } ExifThumbnailDirectory thumbnailDirectory = metadata.getFirstDirectoryOfType(ExifThumbnailDirectory.class); if (thumbnailDirectory != null) { byte[] imageData = thumbnailDirectory.getThumbnailData(); OutputStream fop = new FileOutputStream("G:/Temp/deldir/thumbnail.jpg"); fop.write(imageData); fop.close(); } } } System.out.println("Count = " + count); } }