public Bitmap LoadExifThumbnail() { CheckDisposedState(); if (_exifThumbnail == null) { IFormatReader formatReader = FormatManager.CreateFormatReader(_sourceFileName); try { if (formatReader.MediaFormat == FormatManager.JpegFormat) { JpegReader jpgReader = (JpegReader)formatReader; if (jpgReader.Exif != null && jpgReader.Exif.Contains(ExifDictionary.Thumbnail)) { _exifThumbnail = (Bitmap)jpgReader.Exif[ExifDictionary.Thumbnail]; if (jpgReader.Exif.Contains(ExifDictionary.Orientation)) { _exifAngle = ExifOrientationToAngle(jpgReader.Exif[ExifDictionary.Orientation]); } if (_exifAngle > 0 && !_exifThumbnail.IsEmpty) { _exifThumbnail.Transforms.Rotate(_exifAngle); } return(_exifThumbnail); } } else if (formatReader.MediaFormat == FormatManager.TiffFormat) { TiffReader tiffReader = (TiffReader)formatReader; if (tiffReader.Exif != null && tiffReader.Exif.Contains(ExifDictionary.Thumbnail)) { _exifThumbnail = (Bitmap)tiffReader.Exif[ExifDictionary.Thumbnail]; if (tiffReader.Exif.Contains(ExifDictionary.Orientation)) { _exifAngle = ExifOrientationToAngle(tiffReader.Exif[ExifDictionary.Orientation]); } if (_exifAngle > 0 && !_exifThumbnail.IsEmpty) { _exifThumbnail.Transforms.Rotate(_exifAngle); } return(_exifThumbnail); } } else if (formatReader.MediaFormat == FormatManager.PsdFormat) { PsdReader psdReader = (PsdReader)formatReader; if (psdReader.Exif != null && psdReader.Exif.Contains(ExifDictionary.Thumbnail)) { _exifThumbnail = (Bitmap)psdReader.Exif[ExifDictionary.Thumbnail]; if (psdReader.Exif.Contains(ExifDictionary.Orientation)) { _exifAngle = ExifOrientationToAngle(psdReader.Exif[ExifDictionary.Orientation]); } if (_exifAngle > 0 && !_exifThumbnail.IsEmpty) { _exifThumbnail.Transforms.Rotate(_exifAngle); } return(_exifThumbnail); } } } finally { if (formatReader != null) { formatReader.Close(); formatReader.Dispose(); } } } return(_exifThumbnail); }