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