Exemplo n.º 1
0
        protected void addImageMetaData(ref SolrSearchResults solr_results)
        {
            var ser = new JavaScriptSerializer();

            //if (String.IsNullOrEmpty(base_uri) == false) // add in image metadata, not required for Solr indexing
            //{
            foreach (IInqItem k in solr_results.Results)
            {
                if (k.GetType().IsSubclassOf(typeof(InqItemIIIFBase)))
                {
                    // new logic here for IIIF images
                    // k.ImageMetadata = new ImageMetadata { Identifier = file, Imagefile = file, Width = d[0], Height = d[1], DwtLevels = 0, Levels = 0, CompositingLayerCount = 0 };
                }
                else
                {
                    if (k.File != null)
                    {
                        if (!String.IsNullOrEmpty((ImageHelper.Jpeg2000NamespaceReplace)) && k.File.Contains(ImageHelper.Jpeg2000NamespaceReplace)) // see Jpeg2000NamespaceReplace for explanation
                        {
                            k.File = k.File.Replace(ImageHelper.Jpeg2000NamespaceReplace, ImageHelper.Jpeg2000Namespace);
                        }

                        if ((!JP2HelperBase.IsAudioOrVideo(k.File)) && (!String.IsNullOrEmpty(ImageHelper.ImageFilenameAppend)))
                        {
                            k.File = string.Format("{0}{1}", k.File, ImageHelper.ImageFilenameAppend);
                        }

                        if (k.File.Contains(ImageHelper.Jpeg2000Namespace)) // file is a jpeg2000 image
                        {
                            var md_str = _IJP2Helper.GetJpeg2000Metadata(k.File, false);
                            md_str = md_str.Replace(@"\", @"\\");
                            var md = ser.Deserialize <ImageMetadata>(md_str);
                            k.ImageMetadata = md;
                        }
                        else
                        {
                            var file = k.File;

                            // most importantly we need the width and height of non-jpeg2000 images so can re-size them to thumbnails whilst retaining the aspect ratio
                            var d = ImageHelper.GetImageDimensions(file);

                            if ((file != null) && (file.Contains("'"))) // apostrophes in filenames, good at breaking JSON
                            {
                                file = file.Replace("'", @"\'");
                            }

                            k.ImageMetadata = new ImageMetadata {
                                Identifier = file, Imagefile = file, Width = d[0], Height = d[1], DwtLevels = 0, Levels = 0, CompositingLayerCount = 0
                            };
                            // k.ImageMetadata = ser.Deserialize<Jpeg2000Metadata>(String.Format("{{ 'identifier': '{0}', 'imagefile': '{0}', 'width': '{1}', 'height': '{2}', 'dwtLevels': '0', 'levels': '0', 'compositingLayerCount': '0' }}", file, d[0], d[1]));
                        }
                    }
                }
            }
            //}
            //else
            //    throw new Exception("SolrRespository.addImageMetaData(): base_uri parameter empty");
            // return r_list;
        }
Exemplo n.º 2
0
        public static int[] GetImageDimensions(string file)
        {
            try
            {
                if (JP2HelperBase.IsAudioOrVideo(file))
                {
                    file = Path.ChangeExtension(file, ".jpg"); // replace audio/video file extension with .jpg so thumbnail can be read for metadata
                }
                file = String.Format("{0}{1}", ImageDirectory, file);

                var bitmapFrame = BitmapFrame.Create(new Uri(file), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
                return(new[] { bitmapFrame.PixelWidth, bitmapFrame.PixelHeight });
            }
            catch (Exception)
            {
                return(new[] { 0, 0 });
            }
        }