Exemple #1
0
        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);
        }