} else {
ImageMetadata imgmeta = new ImageMetadata();
// Extract IPTC information
Directory iptc = meta.getDirectory(IptcDirectory.class);
if (iptc.containsTag(IptcDirectory.TAG_HEADLINE))
imgmeta.setCaption(iptc.getString(IptcDirectory.TAG_HEADLINE));
if (iptc.containsTag(IptcDirectory.TAG_CAPTION))
imgmeta.setLegend(iptc.getString(IptcDirectory.TAG_CAPTION));
if (iptc.containsTag(IptcDirectory.TAG_BY_LINE))
imgmeta.setPhotographer(iptc.getString(IptcDirectory.TAG_BY_LINE));
if (iptc.containsTag(IptcDirectory.TAG_COPYRIGHT_NOTICE))
imgmeta.setCopyright(iptc.getString(IptcDirectory.TAG_COPYRIGHT_NOTICE));
if (iptc.containsTag(IptcDirectory.TAG_CITY))
imgmeta.setLocation(iptc.getString(IptcDirectory.TAG_CITY));
if (iptc.containsTag(IptcDirectory.TAG_KEYWORDS)) {
StringTokenizer st = new StringTokenizer(iptc.getString(IptcDirectory.TAG_KEYWORDS), ",;");
while (st.hasMoreTokens()) {
imgmeta.addKeyword(st.nextToken());
}
}
// Extract EXIF information
Directory exif = meta.getDirectory(ExifDirectory.class);
if (exif.containsTag(ExifDirectory.TAG_DATETIME)) {
try {
imgmeta.setDateTaken(exif.getDate(ExifDirectory.TAG_DATETIME));
} catch (MetadataException e) {
}
}
if (exif.containsTag(ExifDirectory.TAG_ISO_EQUIVALENT)) {
try {
imgmeta.setFilmspeed(exif.getInt(ExifDirectory.TAG_ISO_EQUIVALENT));
} catch (MetadataException e) {
}
}
if (exif.containsTag(ExifDirectory.TAG_FNUMBER)) {
try {
imgmeta.setFNumber(exif.getFloat(ExifDirectory.TAG_FNUMBER));
} catch (MetadataException e) {
}
}
if (exif.containsTag(ExifDirectory.TAG_FOCAL_LENGTH)) {
try {
imgmeta.setFocalWidth(exif.getInt(ExifDirectory.TAG_FOCAL_LENGTH));
} catch (MetadataException e) {
}
}
if (exif.containsTag(ExifDirectory.TAG_EXPOSURE_TIME)) {
try {
imgmeta.setExposureTime(exif.getFloat(ExifDirectory.TAG_EXPOSURE_TIME));
} catch (MetadataException e) {
}
}
if (StringUtils.isBlank(imgmeta.getCopyright()) && exif.containsTag(ExifDirectory.TAG_COPYRIGHT))
imgmeta.setCopyright(exif.getString(ExifDirectory.TAG_COPYRIGHT));
// Extract GPS information
try {
Directory gps = meta.getDirectory(GpsDirectory.class);
if (gps.containsTag(GpsDirectory.TAG_GPS_LATITUDE)) {
Rational[] lat = gps.getRationalArray(GpsDirectory.TAG_GPS_LATITUDE);
String latRef = gps.getString(GpsDirectory.TAG_GPS_LATITUDE_REF);
double latitude = parseHMS(lat);
if (latitude != 0) {
if (StringUtils.isNotBlank(latRef) && "S".equalsIgnoreCase(latRef) && latitude > 0)
latitude *= -1;
}
imgmeta.setGpsLat(latitude);
}
if (gps.containsTag(GpsDirectory.TAG_GPS_LONGITUDE)) {
Rational[] lng = gps.getRationalArray(GpsDirectory.TAG_GPS_LONGITUDE);
String lngRef = gps.getString(GpsDirectory.TAG_GPS_LONGITUDE_REF);
double longitude = parseHMS(lng);
if (longitude != 0) {
if (StringUtils.isNotBlank(lngRef) && "W".equalsIgnoreCase(lngRef) && longitude > 0)
longitude *= -1;
}