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)
});
}