/// <summary> /// Shows only IPTC directory and only the TAG_HEADLINE value for one file. /// </summary> /// <param name="aFileName">the image file name (ex: c:/temp/a.jpg)</param> /// <returns>The information about IPTC for this image but only the TAG_HEADLINE tag as a string</returns> public static string ShowOneFileOnlyIptcOnlyTagTAG_HEADLINE(string aFileName) { Metadata lcMetadata = null; try { FileInfo lcImgFile = new FileInfo(aFileName); // Loading all meta data lcMetadata = JpegMetadataReader.ReadMetadata(lcImgFile); } catch (JpegProcessingException e) { Console.Error.WriteLine(e.Message); return("Error"); } // Now try to print them StringBuilder lcBuff = new StringBuilder(1024); lcBuff.Append("---> ").Append(aFileName).Append(" <---").AppendLine(); // We want anly IPCT directory IptcDirectory lcIptDirectory = (IptcDirectory)lcMetadata.GetDirectory("com.drew.metadata.iptc.IptcDirectory"); if (lcIptDirectory == null) { lcBuff.Append("No Iptc for this image.!").AppendLine(); return(lcBuff.ToString()); } // We look for potential error if (lcIptDirectory.HasError) { Console.Error.WriteLine("Some errors were found, activate trace using /d:TRACE option with the compiler"); } // Then we want only the TAG_HEADLINE tag if (!lcIptDirectory.ContainsTag(IptcDirectory.TAG_HEADLINE)) { lcBuff.Append("No TAG_HEADLINE for this image.!").AppendLine(); return(lcBuff.ToString()); } string lcTagDescription = null; try { lcTagDescription = lcIptDirectory.GetDescription(IptcDirectory.TAG_HEADLINE); } catch (MetadataException e) { Console.Error.WriteLine(e.Message); } string lcTagName = lcIptDirectory.GetTagName(IptcDirectory.TAG_HEADLINE); lcBuff.Append(lcTagName).Append('=').Append(lcTagDescription).AppendLine(); return(lcBuff.ToString()); }
public void ExifRead_GetExifKeywordsMultipleTest() { var dir = new IptcDirectory(); dir.Set(IptcDirectory.TagKeywords, "test123;test12"); var t = ReadMetaExif.GetExifKeywords(dir); Assert.AreEqual("test123, test12", t); //with space }
public void ExifRead_GetExifKeywordsSingleTest() { var dir = new IptcDirectory(); dir.Set(IptcDirectory.TagKeywords, "test123"); var t = ReadMetaExif.GetExifKeywords(dir); Assert.AreEqual("test123", t); }
public void ExifRead_GetCaptionAbstractTest() { var dir = new IptcDirectory(); dir.Set(IptcDirectory.TagCaption, "test123"); var t = ReadMetaExif.GetCaptionAbstract(dir); Assert.AreEqual("test123", t); }
public void ExifRead_GetObjectNameTest() { var dir = new IptcDirectory(); dir.Set(IptcDirectory.TagObjectName, "test"); var t = ReadMetaExif.GetObjectName(dir); Assert.AreEqual("test", t); }
private static void SetIPTCProperties(IEnumerable <Directory> directories, ImageMetadata metaData) { IptcDirectory directory = directories.OfType <IptcDirectory>().FirstOrDefault(); if (directory == null) { return; } metaData.ObjectName = directory.GetString(IptcDirectory.TagObjectName); metaData.Keywords = directory.GetKeywords(); metaData.Caption = directory.GetString(IptcDirectory.TagCaption); }
/// <summary> /// Gets and caches the most relevant date available for an image. /// It looks first at the EXIF date, then at the creation date from ITPC data, /// and then at the file's creation date if everything else failed. /// </summary> /// <param name="pictureFileInfo">The FileInfo for the image.</param> /// <returns>The date.</returns> internal static DateTime GetImageDate(FileInfo pictureFileInfo) { string cacheKey = "date(" + pictureFileInfo.FullName + ")"; Cache cache = HttpContext.Current.Cache; DateTime result = DateTime.MinValue; object cached = cache[cacheKey]; if (cached == null) { Metadata data = GetImageData(pictureFileInfo); ExifDirectory directory = (ExifDirectory)data.GetDirectory(typeof(ExifDirectory)); if (directory.ContainsTag(ExifDirectory.TAG_DATETIME)) { try { result = directory.GetDate(ExifDirectory.TAG_DATETIME); } catch { } } else { IptcDirectory iptcDir = (IptcDirectory)data.GetDirectory(typeof(IptcDirectory)); if (iptcDir.ContainsTag(IptcDirectory.TAG_DATE_CREATED)) { try { result = iptcDir.GetDate(IptcDirectory.TAG_DATE_CREATED); } catch { } } else { result = pictureFileInfo.CreationTime; } } cache.Insert(cacheKey, result, new CacheDependency(pictureFileInfo.FullName)); } else { result = (DateTime)cached; } return(result); }
public IptcDirectoryTest() { _directory = new IptcDirectory(); }