public ExifData Parse(BitmapSource bitmap) { BitmapMetadata metadata; try { metadata = (BitmapMetadata)bitmap.Metadata; } catch { return(null); } return(new ExifData { DateTaken = GetDateTaken(metadata), CameraManufacturer = GetStringValue(metadata, m => m.CameraManufacturer), CameraModel = GetStringValue(metadata, m => m.CameraModel), CreationSoftware = metadata.ReadString(CreationSoftwareQuery), ImageWidth = bitmap.PixelWidth, ImageHeight = bitmap.PixelHeight, HorizontalResolution = metadata.ReadUnsignedRational(HorizontalResolutionQuery), VerticalResolution = metadata.ReadUnsignedRational(VerticalResolutionQuery), ImageOrientation = GetOrientation(metadata), ColorRepresentation = GetColorRepresentation(metadata), ISOSpeed = metadata.ReadUShort(ISOSpeedQuery), FNumber = metadata.ReadUnsignedRational(FNumberQuery), ExposureTime = metadata.ReadUnsignedRational(ExposureTimeQuery), ExposureCompensation = metadata.ReadSignedRational(ExposureCompensationQuery), LensAperture = metadata.ReadUnsignedRational(LensApertureQuery), FocalLength = metadata.ReadUnsignedRational(FocalLengthQuery), FlashMode = GetFlashMode(metadata), ExposureMode = GetExposureMode(metadata), WhiteBalanceMode = GetWhiteBalanceMode(metadata), GpsData = m_gpsInfoParser.Parse(metadata) }); }