private void getMetadatas() { JpegMetadataReader jpegMetadatas = new JpegMetadataReader(new Uri(uri).LocalPath); jpegMetadatas.RetrieveMetadatas(); metadatas = new Molecule.Collections.Dictionary<string, string>(); foreach(KeyValuePair<string, string> kvp in jpegMetadatas.CommonMetadatas) { metadatas.Add(kvp.Key, kvp.Value); } if( jpegMetadatas.ContainsGPSInformation ) { this.latitude = jpegMetadatas.Latitude; this.longitude = jpegMetadatas.Longitude; } }
public void RetrieveMetadatas() { commonMetadatas = new Molecule.Collections.Dictionary<string,string>(); // Loading all meta data com.drew.metadata.Metadata photoMedatas = com.drew.imaging.jpg.JpegMetadataReader.ReadMetadata(jpegFileInfo); if (photoMedatas.ContainsDirectory( typeof(com.drew.metadata.exif.ExifDirectory))) { // Make AbstractDirectory exifDirectory = photoMedatas.GetDirectory(typeof(com.drew.metadata.exif.ExifDirectory).ToString()); if( exifDirectory.ContainsTag(com.drew.metadata.exif.ExifDirectory.TAG_MAKE)) { commonMetadatas.Add(exifDirectory.GetTagName(com.drew.metadata.exif.ExifDirectory.TAG_MAKE), exifDirectory.GetString( com.drew.metadata.exif.ExifDirectory.TAG_MAKE)); } // Model if( exifDirectory.ContainsTag(com.drew.metadata.exif.ExifDirectory.TAG_MODEL)) { commonMetadatas.Add(exifDirectory.GetTagName(com.drew.metadata.exif.ExifDirectory.TAG_MODEL), exifDirectory.GetString( com.drew.metadata.exif.ExifDirectory.TAG_MODEL)); } // Model if( exifDirectory.ContainsTag(com.drew.metadata.exif.ExifDirectory.TAG_APERTURE)) { commonMetadatas.Add(exifDirectory.GetTagName(com.drew.metadata.exif.ExifDirectory.TAG_APERTURE), exifDirectory.GetDescription( com.drew.metadata.exif.ExifDirectory.TAG_APERTURE)); } if( exifDirectory.ContainsTag(com.drew.metadata.exif.ExifDirectory.TAG_FLASH)) { commonMetadatas.Add(exifDirectory.GetTagName(com.drew.metadata.exif.ExifDirectory.TAG_FLASH), exifDirectory.GetDescription( com.drew.metadata.exif.ExifDirectory.TAG_FLASH)); } if( exifDirectory.ContainsTag(com.drew.metadata.exif.ExifDirectory.TAG_ISO_EQUIVALENT)) { commonMetadatas.Add(exifDirectory.GetTagName(com.drew.metadata.exif.ExifDirectory.TAG_ISO_EQUIVALENT), exifDirectory.GetString( com.drew.metadata.exif.ExifDirectory.TAG_ISO_EQUIVALENT)); } if( exifDirectory.ContainsTag(com.drew.metadata.exif.ExifDirectory.TAG_FOCAL_LENGTH)) { commonMetadatas.Add(exifDirectory.GetTagName(com.drew.metadata.exif.ExifDirectory.TAG_FOCAL_LENGTH), exifDirectory.GetString( com.drew.metadata.exif.ExifDirectory.TAG_FOCAL_LENGTH)); } if( exifDirectory.ContainsTag(com.drew.metadata.exif.ExifDirectory.TAG_FOCAL_LENGTH_IN_35MM_FILM)) { commonMetadatas.Add(exifDirectory.GetTagName(com.drew.metadata.exif.ExifDirectory.TAG_FOCAL_LENGTH_IN_35MM_FILM), exifDirectory.GetString( com.drew.metadata.exif.ExifDirectory.TAG_FOCAL_LENGTH_IN_35MM_FILM)); } } if (photoMedatas.ContainsDirectory( typeof(com.drew.metadata.exif.GpsDirectory))) { AbstractDirectory gpsDirectory = photoMedatas.GetDirectory(typeof(com.drew.metadata.exif.GpsDirectory).ToString()); if( gpsDirectory.ContainsTag(com.drew.metadata.exif.GpsDirectory.TAG_GPS_LATITUDE) && gpsDirectory.ContainsTag(com.drew.metadata.exif.GpsDirectory.TAG_GPS_LONGITUDE)) { Rational[] latitudeRationals = gpsDirectory.GetRationalArray(com.drew.metadata.exif.GpsDirectory.TAG_GPS_LATITUDE); this.ContainsGPSInformation = true; this.Latitude = (gpsDirectory.GetString( com.drew.metadata.exif.GpsDirectory.TAG_GPS_LONGITUDE_REF).Equals("N")? -1 : 1 )* ConvertDMSToDecimalDegrees(latitudeRationals[0].DoubleValue(), latitudeRationals[1].DoubleValue(), latitudeRationals[2].DoubleValue()); Rational[] longitudeRationals = gpsDirectory.GetRationalArray(com.drew.metadata.exif.GpsDirectory.TAG_GPS_LONGITUDE); this.Longitude = (gpsDirectory.GetString( com.drew.metadata.exif.GpsDirectory.TAG_GPS_LONGITUDE_REF).Equals("W")? -1 : 1 )* ConvertDMSToDecimalDegrees(longitudeRationals[0].DoubleValue(), longitudeRationals[1].DoubleValue(), longitudeRationals[2].DoubleValue()); } } }