Exemple #1
0
        private void AddExifMetadata(IGalleryObjectMetadataItemCollection metadataItems)
        {
            foreach (FormattedMetadataItemName metadataItemName in Enum.GetValues(typeof(FormattedMetadataItemName)))
            {
                IGalleryObjectMetadataItem mdi = null;
                switch (metadataItemName)
                {
                case FormattedMetadataItemName.Author: mdi = GetStringMetadataItem(RawMetadataItemName.Artist, FormattedMetadataItemName.Author, Resources.Metadata_Author); break;

                case FormattedMetadataItemName.CameraModel: mdi = GetStringMetadataItem(RawMetadataItemName.EquipModel, FormattedMetadataItemName.CameraModel, Resources.Metadata_CameraModel); break;

                case FormattedMetadataItemName.ColorRepresentation: mdi = GetColorRepresentationMetadataItem(); break;

                case FormattedMetadataItemName.Comment: mdi = GetStringMetadataItem(RawMetadataItemName.ExifUserComment, FormattedMetadataItemName.Comment, Resources.Metadata_Comment); break;

                case FormattedMetadataItemName.Copyright: mdi = GetStringMetadataItem(RawMetadataItemName.Copyright, FormattedMetadataItemName.Copyright, Resources.Metadata_Copyright); break;

                case FormattedMetadataItemName.DatePictureTaken: mdi = GetDatePictureTakenMetadataItem(); break;

                case FormattedMetadataItemName.Description: mdi = GetStringMetadataItem(RawMetadataItemName.ImageDescription, FormattedMetadataItemName.Description, Resources.Metadata_Description); break;

                case FormattedMetadataItemName.Dimensions: mdi = GetDimensionsMetadataItem(); break;

                case FormattedMetadataItemName.EquipmentManufacturer: mdi = GetStringMetadataItem(RawMetadataItemName.EquipMake, FormattedMetadataItemName.EquipmentManufacturer, Resources.Metadata_EquipmentManufacturer); break;

                case FormattedMetadataItemName.ExposureCompensation: mdi = GetExposureCompensationMetadataItem(); break;

                case FormattedMetadataItemName.ExposureProgram: mdi = GetExposureProgramMetadataItem(); break;

                case FormattedMetadataItemName.ExposureTime: mdi = GetExposureTimeMetadataItem(); break;

                case FormattedMetadataItemName.FlashMode: mdi = GetFlashModeMetadataItem(); break;

                case FormattedMetadataItemName.FNumber: mdi = GetFNumberMetadataItem(); break;

                case FormattedMetadataItemName.FocalLength: mdi = GetFocalLengthMetadataItem(); break;

                case FormattedMetadataItemName.Height: mdi = GetHeightMetadataItem(); break;

                case FormattedMetadataItemName.HorizontalResolution: mdi = GetXResolutionMetadataItem(); break;

                case FormattedMetadataItemName.IsoSpeed: mdi = GetStringMetadataItem(RawMetadataItemName.ExifISOSpeed, FormattedMetadataItemName.IsoSpeed, Resources.Metadata_IsoSpeed); break;

                case FormattedMetadataItemName.Keywords: break;                         // No way to access keywords through Exif, so just skip this one

                case FormattedMetadataItemName.LensAperture: mdi = GetApertureMetadataItem(); break;

                case FormattedMetadataItemName.LightSource: mdi = GetLightSourceMetadataItem(); break;

                case FormattedMetadataItemName.MeteringMode: mdi = GetMeteringModeMetadataItem(); break;

                case FormattedMetadataItemName.Rating: break;                         // No way to access rating through Exif, so just skip this one

                case FormattedMetadataItemName.Subject: break;                        // No way to access rating through Exif, so just skip this one

                case FormattedMetadataItemName.SubjectDistance: mdi = GetStringMetadataItem(RawMetadataItemName.ExifSubjectDist, FormattedMetadataItemName.SubjectDistance, Resources.Metadata_SubjectDistance, String.Concat("{0} ", Resources.Metadata_SubjectDistance_Units)); break;

                case FormattedMetadataItemName.Title: mdi = GetStringMetadataItem(RawMetadataItemName.ImageTitle, FormattedMetadataItemName.Title, Resources.Metadata_Title); break;

                case FormattedMetadataItemName.VerticalResolution: mdi = GetYResolutionMetadataItem(); break;

                case FormattedMetadataItemName.Width: mdi = GetWidthMetadataItem(); break;

                default: throw new System.ComponentModel.InvalidEnumArgumentException(string.Format(CultureInfo.CurrentCulture, "The FormattedMetadataItemName enumeration value {0} is not being processed in MediaObjectMetadataExtractor.AddExifMetadata().", metadataItemName.ToString()));
                }
                if ((mdi != null) && (!metadataItems.Contains(mdi)))
                {
                    metadataItems.Add(mdi);
                }
            }
        }
		private void AddExifMetadata(IGalleryObjectMetadataItemCollection metadataItems)
		{
			foreach (FormattedMetadataItemName metadataItemName in Enum.GetValues(typeof(FormattedMetadataItemName)))
			{
				IGalleryObjectMetadataItem mdi = null;
				switch (metadataItemName)
				{
					case FormattedMetadataItemName.Author: mdi = GetStringMetadataItem(RawMetadataItemName.Artist, FormattedMetadataItemName.Author, Resources.Metadata_Author); break;
					case FormattedMetadataItemName.CameraModel: mdi = GetStringMetadataItem(RawMetadataItemName.EquipModel, FormattedMetadataItemName.CameraModel, Resources.Metadata_CameraModel); break;
					case FormattedMetadataItemName.ColorRepresentation: mdi = GetColorRepresentationMetadataItem(); break;
					case FormattedMetadataItemName.Comment: mdi = GetStringMetadataItem(RawMetadataItemName.ExifUserComment, FormattedMetadataItemName.Comment, Resources.Metadata_Comment); break;
					case FormattedMetadataItemName.Copyright: mdi = GetStringMetadataItem(RawMetadataItemName.Copyright, FormattedMetadataItemName.Copyright, Resources.Metadata_Copyright); break;
					case FormattedMetadataItemName.DatePictureTaken: mdi = GetDatePictureTakenMetadataItem(); break;
					case FormattedMetadataItemName.Description: mdi = GetStringMetadataItem(RawMetadataItemName.ImageDescription, FormattedMetadataItemName.Description, Resources.Metadata_Description); break;
					case FormattedMetadataItemName.Dimensions: mdi = GetDimensionsMetadataItem(); break;
					case FormattedMetadataItemName.EquipmentManufacturer: mdi = GetStringMetadataItem(RawMetadataItemName.EquipMake, FormattedMetadataItemName.EquipmentManufacturer, Resources.Metadata_EquipmentManufacturer); break;
					case FormattedMetadataItemName.ExposureCompensation: mdi = GetExposureCompensationMetadataItem(); break;
					case FormattedMetadataItemName.ExposureProgram: mdi = GetExposureProgramMetadataItem(); break;
					case FormattedMetadataItemName.ExposureTime: mdi = GetExposureTimeMetadataItem(); break;
					case FormattedMetadataItemName.FlashMode: mdi = GetFlashModeMetadataItem(); break;
					case FormattedMetadataItemName.FNumber: mdi = GetFNumberMetadataItem(); break;
					case FormattedMetadataItemName.FocalLength: mdi = GetFocalLengthMetadataItem(); break;
					case FormattedMetadataItemName.Height: mdi = GetHeightMetadataItem(); break;
					case FormattedMetadataItemName.HorizontalResolution: mdi = GetXResolutionMetadataItem(); break;
					case FormattedMetadataItemName.IsoSpeed: mdi = GetStringMetadataItem(RawMetadataItemName.ExifISOSpeed, FormattedMetadataItemName.IsoSpeed, Resources.Metadata_IsoSpeed); break;
					case FormattedMetadataItemName.Keywords: break; // No way to access keywords through Exif, so just skip this one
					case FormattedMetadataItemName.LensAperture: mdi = GetApertureMetadataItem(); break;
					case FormattedMetadataItemName.LightSource: mdi = GetLightSourceMetadataItem(); break;
					case FormattedMetadataItemName.MeteringMode: mdi = GetMeteringModeMetadataItem(); break;
					case FormattedMetadataItemName.Rating: break; // No way to access rating through Exif, so just skip this one
					case FormattedMetadataItemName.Subject: break; // No way to access rating through Exif, so just skip this one
					case FormattedMetadataItemName.SubjectDistance: mdi = GetStringMetadataItem(RawMetadataItemName.ExifSubjectDist, FormattedMetadataItemName.SubjectDistance, Resources.Metadata_SubjectDistance, String.Concat("{0} ", Resources.Metadata_SubjectDistance_Units)); break;
					case FormattedMetadataItemName.Title: mdi = GetStringMetadataItem(RawMetadataItemName.ImageTitle, FormattedMetadataItemName.Title, Resources.Metadata_Title); break;
					case FormattedMetadataItemName.VerticalResolution: mdi = GetYResolutionMetadataItem(); break;
					case FormattedMetadataItemName.Width: mdi = GetWidthMetadataItem(); break;

					default: throw new System.ComponentModel.InvalidEnumArgumentException(string.Format(CultureInfo.CurrentCulture, "The FormattedMetadataItemName enumeration value {0} is not being processed in MediaObjectMetadataExtractor.AddExifMetadata().", metadataItemName.ToString()));
				}
				if ((mdi != null) && (!metadataItems.Contains(mdi)))
				{
					metadataItems.Add(mdi);
				}
			}
		}
        //private void OutputToDebugWindow()
        //{
        //  foreach (RawMetadataItemName metadataItemName in Enum.GetValues(typeof(RawMetadataItemName)))
        //  {
        //    MetadataItem rawMdi;
        //    if (RawMetadata.TryGetValue(metadataItemName, out rawMdi))
        //    {
        //      string rawValue = rawMdi.Value.ToString().Trim().TrimEnd(new char[] {'\0'});
        //      string msg = String.Format(CultureInfo.CurrentCulture, "{0}: {1} (ID {2}, {3}, {4})", metadataItemName, rawValue, rawMdi.PropertyItem.Id, rawMdi.ExtractedValueType, rawMdi.PropertyTagType);
        //      System.Diagnostics.Trace.WriteLine(msg);
        //    }
        //  }
        //}
        private void AddExifMetadata(IGalleryObjectMetadataItemCollection metadataItems)
        {
            //OutputToDebugWindow();

            foreach (FormattedMetadataItemName metadataItemName in Enum.GetValues(typeof(FormattedMetadataItemName)))
            {
                IGalleryObjectMetadataItem mdi = null;
                switch (metadataItemName)
                {
                    case FormattedMetadataItemName.Author: mdi = GetStringMetadataItem(RawMetadataItemName.Artist, FormattedMetadataItemName.Author, Resources.Metadata_Author); break;
                    case FormattedMetadataItemName.CameraModel: mdi = GetStringMetadataItem(RawMetadataItemName.EquipModel, FormattedMetadataItemName.CameraModel, Resources.Metadata_CameraModel); break;
                    case FormattedMetadataItemName.ColorRepresentation: mdi = GetColorRepresentationMetadataItem(); break;
                    case FormattedMetadataItemName.Comment: mdi = GetStringMetadataItem(RawMetadataItemName.ExifUserComment, FormattedMetadataItemName.Comment, Resources.Metadata_Comment); break;
                    case FormattedMetadataItemName.Copyright: mdi = GetStringMetadataItem(RawMetadataItemName.Copyright, FormattedMetadataItemName.Copyright, Resources.Metadata_Copyright); break;
                    case FormattedMetadataItemName.DatePictureTaken: mdi = GetDatePictureTakenMetadataItem(); break;
                    case FormattedMetadataItemName.Description: mdi = GetStringMetadataItem(RawMetadataItemName.ImageDescription, FormattedMetadataItemName.Description, Resources.Metadata_Description); break;
                    case FormattedMetadataItemName.Dimensions: mdi = GetDimensionsMetadataItem(); break;
                    case FormattedMetadataItemName.EquipmentManufacturer: mdi = GetStringMetadataItem(RawMetadataItemName.EquipMake, FormattedMetadataItemName.EquipmentManufacturer, Resources.Metadata_EquipmentManufacturer); break;
                    case FormattedMetadataItemName.ExposureCompensation: mdi = GetExposureCompensationMetadataItem(); break;
                    case FormattedMetadataItemName.ExposureProgram: mdi = GetExposureProgramMetadataItem(); break;
                    case FormattedMetadataItemName.ExposureTime: mdi = GetExposureTimeMetadataItem(); break;
                    case FormattedMetadataItemName.FlashMode: mdi = GetFlashModeMetadataItem(); break;
                    case FormattedMetadataItemName.FNumber: mdi = GetFNumberMetadataItem(); break;
                    case FormattedMetadataItemName.FocalLength: mdi = GetFocalLengthMetadataItem(); break;
                    case FormattedMetadataItemName.Height: mdi = GetHeightMetadataItem(); break;
                    case FormattedMetadataItemName.HorizontalResolution: mdi = GetXResolutionMetadataItem(); break;
                    case FormattedMetadataItemName.IsoSpeed: mdi = GetStringMetadataItem(RawMetadataItemName.ExifISOSpeed, FormattedMetadataItemName.IsoSpeed, Resources.Metadata_IsoSpeed); break;
                    case FormattedMetadataItemName.Keywords: break; // No way to access keywords through Exif, so just skip this one
                    case FormattedMetadataItemName.LensAperture: mdi = GetApertureMetadataItem(); break;
                    case FormattedMetadataItemName.LightSource: mdi = GetLightSourceMetadataItem(); break;
                    case FormattedMetadataItemName.MeteringMode: mdi = GetMeteringModeMetadataItem(); break;
                    case FormattedMetadataItemName.Rating: break; // No way to access rating through Exif, so just skip this one
                    case FormattedMetadataItemName.Subject: break; // No way to access rating through Exif, so just skip this one
                    case FormattedMetadataItemName.SubjectDistance: mdi = GetSubjectDistanceMetadataItem(); break;
                    case FormattedMetadataItemName.Title: mdi = GetStringMetadataItem(RawMetadataItemName.ImageTitle, FormattedMetadataItemName.Title, Resources.Metadata_Title); break;
                    case FormattedMetadataItemName.VerticalResolution: mdi = GetYResolutionMetadataItem(); break;
                    case FormattedMetadataItemName.Width: mdi = GetWidthMetadataItem(); break;
                }
                if ((mdi != null) && (!metadataItems.Contains(mdi)))
                {
                    metadataItems.Add(mdi);
                }
            }
        }
        /// <summary>
        /// Adds file-specific information, such as file name, file size, etc, to the <paramref name="metadataItems" />.
        /// </summary>
        /// <param name="metadataItems">The collection of <see cref="IGalleryObjectMetadataItem" /> objects to add to.</param>
        private void AddFileMetadata(IGalleryObjectMetadataItemCollection metadataItems)
        {
            FileInfo file = new FileInfo(this._mediaObjectFilePath);

            int fileSize = (int)(file.Length / 1024);
            fileSize = (fileSize < 1 ? 1 : fileSize); // Very small files should be 1, not 0.

            metadataItems.Add(new GalleryObjectMetadataItem(int.MinValue, FormattedMetadataItemName.FileName, Resources.Metadata_FileName, file.Name, true));
            metadataItems.Add(new GalleryObjectMetadataItem(int.MinValue, FormattedMetadataItemName.FileNameWithoutExtension, Resources.Metadata_FileName, Path.GetFileNameWithoutExtension(file.Name), true));
            metadataItems.Add(new GalleryObjectMetadataItem(int.MinValue, FormattedMetadataItemName.FileSizeKb, Resources.Metadata_FileSize, String.Concat(fileSize.ToString("N0", CultureInfo.CurrentCulture), " ", Resources.Metadata_KB), true));
            metadataItems.Add(new GalleryObjectMetadataItem(int.MinValue, FormattedMetadataItemName.DateFileCreated, Resources.Metadata_DateFileCreated, file.CreationTime.ToString(GlobalConstants.DateTimeFormatStringForMetadata, CultureInfo.InvariantCulture), true));
            metadataItems.Add(new GalleryObjectMetadataItem(int.MinValue, FormattedMetadataItemName.DateFileCreatedUtc, Resources.Metadata_DateFileCreatedUtc, file.CreationTimeUtc.ToString(GlobalConstants.DateTimeFormatStringForMetadata, CultureInfo.InvariantCulture), true));
            metadataItems.Add(new GalleryObjectMetadataItem(int.MinValue, FormattedMetadataItemName.DateFileLastModified, Resources.Metadata_DateFileLastModified, file.LastWriteTime.ToString(GlobalConstants.DateTimeFormatStringForMetadata, CultureInfo.InvariantCulture), true));
            metadataItems.Add(new GalleryObjectMetadataItem(int.MinValue, FormattedMetadataItemName.DateFileLastModifiedUtc, Resources.Metadata_DateFileLastModifiedUtc, file.LastWriteTimeUtc.ToString(GlobalConstants.DateTimeFormatStringForMetadata, CultureInfo.InvariantCulture), true));
        }
 private static void AddMetadataItem(IGalleryObjectMetadataItemCollection metadataItems, GalleryObjectMetadataItem metadataItem)
 {
     if ((metadataItem != null) && (!metadataItems.Contains(metadataItem)))
     {
         metadataItems.Add(metadataItem);
     }
 }