Example #1
0
        /// <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());
        }
Example #2
0
        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
        }
Example #3
0
        public void ExifRead_GetExifKeywordsSingleTest()
        {
            var dir = new IptcDirectory();

            dir.Set(IptcDirectory.TagKeywords, "test123");
            var t = ReadMetaExif.GetExifKeywords(dir);

            Assert.AreEqual("test123", t);
        }
Example #4
0
        public void ExifRead_GetCaptionAbstractTest()
        {
            var dir = new IptcDirectory();

            dir.Set(IptcDirectory.TagCaption, "test123");
            var t = ReadMetaExif.GetCaptionAbstract(dir);

            Assert.AreEqual("test123", t);
        }
Example #5
0
        public void ExifRead_GetObjectNameTest()
        {
            var dir = new IptcDirectory();

            dir.Set(IptcDirectory.TagObjectName, "test");
            var t = ReadMetaExif.GetObjectName(dir);

            Assert.AreEqual("test", t);
        }
Example #6
0
        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);
        }
Example #7
0
        /// <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();
 }