private static Directory getMetaDirectory(File file) { try { Metadata metadata = JpegMetadataReader.readMetadata(file); return metadata.getDirectory(ExifDirectory.class); } catch (JpegProcessingException e) { e.printStackTrace(); } return null; }
public ImageGeo(String filename) { try { error = false; File jpegFile = new File(filename); Metadata metadata = JpegMetadataReader.readMetadata(jpegFile); GpsDirectory gpsdir = (GpsDirectory) metadata.getDirectory(GpsDirectory.class); Rational latpart[] = gpsdir.getRationalArray(GpsDirectory.TAG_GPS_LATITUDE); Rational lonpart[] = gpsdir.getRationalArray(GpsDirectory.TAG_GPS_LONGITUDE); String northing = gpsdir.getString(GpsDirectory.TAG_GPS_LATITUDE_REF); String easting = gpsdir.getString(GpsDirectory.TAG_GPS_LONGITUDE_REF); try { alt = gpsdir.getDouble(GpsDirectory.TAG_GPS_ALTITUDE); } catch (Exception ex) { } double latsign = 1.0d; if (northing.equalsIgnoreCase("S")) latsign = -1.0d; double lonsign = 1.0d; if (easting.equalsIgnoreCase("W")) lonsign = -1.0d; lat = (Math.abs(latpart[0].doubleValue()) + latpart[1].doubleValue() / 60.0d + latpart[2].doubleValue() / 3600.0d) * latsign; lon = (Math.abs(lonpart[0].doubleValue()) + lonpart[1].doubleValue() / 60.0d + lonpart[2].doubleValue() / 3600.0d) * lonsign; if (Double.isNaN(lat) || Double.isNaN(lon)) error = true; } catch (Exception ex) { error = true; } System.out.println(filename + ": (" + lat + ", " + lon + ")"); }