Example #1
0
        internal void GeneratePostImageResizes(PostRepository postRepository)
        {
            var dzi = new DeepZoomImage(_settings);

            var workingPath      = _settings.AbsoluteWorkingFolder;
            var imageFormat      = _settings.PostImageEncoding;
            var extension        = imageFormat.GetName();
            var fileNameIdFormat = _settings.FileNameIdFormat;

            foreach (var postId in postRepository.RetrievePostIds())
            {
                var relativeBinnedImagePath   = Post.ComputeBinnedPath(postId, extension, fileNameIdFormat);
                var absoluteBinnedImagePath   = Path.Combine(workingPath, relativeBinnedImagePath);
                var relativeBinnedImageFolder = Post.ComputeBinnedPath(postId, null, fileNameIdFormat) + "_files";
                var absoluteBinnedImageFolder = Path.Combine(workingPath, relativeBinnedImageFolder);
                Directory.CreateDirectory(absoluteBinnedImageFolder);
                using (var inputStream = absoluteBinnedImagePath.CreateReadStream())
                    using (var sourceBitmap = new Bitmap(inputStream))
                    {
                        dzi.GeneratePostImageResizes(sourceBitmap, (level, resizedBitmap) =>
                        {
                            var levelImageName = "{0}.{1}".FormatInvariant(level, extension);
                            var levelImagePath = Path.Combine(absoluteBinnedImageFolder, levelImageName);
                            using (var outputStream = levelImagePath.CreateReadStream())
                            {
                                resizedBitmap.Save(outputStream, imageFormat);
                            }
                        }
                                                     );
                    }
            }
        }
Example #2
0
        internal static void GeneratePostImageResizes(Settings settings, PostRepository postRepository)
        {
            var size         = settings.ItemImageSize;
            var maximumLevel = DeepZoomImage.DetermineMaximumLevel(size);

            var workingPath      = Path.GetFullPath(WorkingFolderName);
            var imageFormat      = settings.PostImageEncoding;
            var extension        = imageFormat.ToString().ToLower();
            var fileNameIdFormat = settings.FileNameIdFormat;

            foreach (var postId in postRepository.RetrievePostIds())
            {
                var relativeBinnedImagePath   = Post.ComputeBinnedPath(postId, extension, fileNameIdFormat);
                var absoluteBinnedImagePath   = Path.Combine(workingPath, relativeBinnedImagePath);
                var relativeBinnedImageFolder = Post.ComputeBinnedPath(postId, null, fileNameIdFormat) + "_files";
                var absoluteBinnedImageFolder = Path.Combine(workingPath, relativeBinnedImageFolder);
                Directory.CreateDirectory(absoluteBinnedImageFolder);
                using (var inputStream =
                           new FileStream(absoluteBinnedImagePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                    using (var sourceBitmap = new Bitmap(inputStream))
                    {
                        GeneratePostImageResizes(sourceBitmap, size, maximumLevel, (level, resizedBitmap) =>
                        {
                            var levelImageName = "{0}.{1}".FormatInvariant(level, extension);
                            var levelImagePath = Path.Combine(absoluteBinnedImageFolder, levelImageName);
                            using (var outputStream =
                                       new FileStream(levelImagePath, FileMode.Create, FileAccess.Write, FileShare.Read))
                            {
                                resizedBitmap.Save(outputStream, imageFormat);
                            }
                        }
                                                 );
                    }
            }
        }
Example #3
0
        internal void GenerateImageSlices(PostRepository postRepository)
        {
            var dzi = new DeepZoomImage(_settings);

            foreach (var postId in postRepository.RetrievePostIds())
            {
                dzi.SlicePostImage(postId);
            }
        }
Example #4
0
 internal static void GeneratePostImageResizes(Bitmap sourceBitmap, Size size, int maximumLevel, Action <int, Bitmap> saveAction)
 {
     for (var level = maximumLevel; level >= 0; level--)
     {
         var targetSize = DeepZoomImage.ComputeLevelSize(size, level);
         using (var resizedBitmap = DeepZoomImage.Resize(sourceBitmap, targetSize.Width, targetSize.Height))
         {
             saveAction(level, resizedBitmap);
         }
     }
 }
Example #5
0
        internal static void GenerateImageSlices(Settings settings, PostRepository postRepository)
        {
            var size             = settings.ItemImageSize;
            var maximumLevel     = DeepZoomImage.DetermineMaximumLevel(size);
            var imageFormat      = settings.PostImageEncoding;
            var imageExtension   = imageFormat.ToString().ToLower();
            var fileNameIdFormat = settings.FileNameIdFormat;

            foreach (var postId in postRepository.RetrievePostIds())
            {
                SlicePostImage(postId, size, maximumLevel, imageExtension, fileNameIdFormat, imageFormat, settings.TileSize, settings.TileOverlap);
            }
        }
Example #6
0
        internal static void SlicePostImage(int postId, Size size, int maximumLevel, string extension, string fileNameIdFormat, ImageFormat imageFormat, int tileSize, int tileOverlap)
        {
            var workingPath = Path.GetFullPath(WorkingFolderName);
            var outputPath  = Path.GetFullPath(OutputFolderName);
            var relativeBinnedImageFolder       = Post.ComputeBinnedPath(postId, null, fileNameIdFormat) + "_files";
            var absoluteBinnedImageFolder       = Path.Combine(workingPath, relativeBinnedImageFolder);
            var absoluteBinnedOutputImageFolder = Path.Combine(outputPath, relativeBinnedImageFolder);

            for (var level = maximumLevel; level >= 0; level--)
            {
                var levelName           = Convert.ToString(level, 10);
                var targetSize          = DeepZoomImage.ComputeLevelSize(size, level);
                var tileFiles           = new List <Stream> ();
                var inputLevelImageFile = Path.ChangeExtension(levelName, extension);
                var inputLevelImagePath = Path.Combine(absoluteBinnedImageFolder, inputLevelImageFile);
                var outputLevelFolder   = Path.Combine(absoluteBinnedOutputImageFolder, levelName);
                Directory.CreateDirectory(outputLevelFolder);

                var tiles = DeepZoomImage.ComputeTiles(targetSize, tileSize, tileOverlap);
                using (var inputStream =
                           new FileStream(inputLevelImagePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                    using (var levelBitmap = new Bitmap(inputStream))
                    {
                        DeepZoomImage.Slice(levelBitmap, tiles, imageFormat, tileName =>
                        {
                            var tileFileName = Path.ChangeExtension(tileName, extension);
                            var tilePath     = Path.Combine(outputLevelFolder, tileFileName);
                            var stream       =
                                new FileStream(tilePath, FileMode.Create, FileAccess.Write, FileShare.Read);
                            tileFiles.Add(stream);
                            return(stream);
                        }
                                            );
                    }
                foreach (var stream in tileFiles)
                {
                    stream.Close();
                }
            }
        }
Example #7
0
        public ImageCollectionTile(int row, int column, int startingMortonNumber, IEnumerable <int> ids)
        {
            _row    = row;
            _column = column;
            _startingMortonNumber = startingMortonNumber;
            _tileName             = DeepZoomImage.TileName(row, column);
            _ids = new List <int> (ids).AsReadOnly();

            var hashCode = _row ^ _column ^ _startingMortonNumber;

            foreach (var id in ids)
            {
                hashCode ^= id.GetHashCode();
            }
            _hashCode = hashCode;

            var count       = _ids.Count;
            var countPlural = 1 == count ? "" : "s";
            var firstMorton = startingMortonNumber;
            var lastMorton  = firstMorton + count - 1;

            _toString = ToStringTemplate.FormatInvariant(_tileName, count, countPlural, firstMorton, lastMorton);
        }
Example #8
0
        internal void GeneratePostImageResizes (PostRepository postRepository)
        {
            var dzi = new DeepZoomImage (_settings);

            var workingPath = _settings.AbsoluteWorkingFolder;
            var imageFormat = _settings.PostImageEncoding;
            var extension = imageFormat.GetName ();
            var fileNameIdFormat = _settings.FileNameIdFormat;
            foreach (var postId in postRepository.RetrievePostIds ())
            {
                var relativeBinnedImagePath = Post.ComputeBinnedPath (postId, extension, fileNameIdFormat);
                var absoluteBinnedImagePath = Path.Combine (workingPath, relativeBinnedImagePath);
                var relativeBinnedImageFolder = Post.ComputeBinnedPath (postId, null, fileNameIdFormat) + "_files";
                var absoluteBinnedImageFolder = Path.Combine (workingPath, relativeBinnedImageFolder);
                Directory.CreateDirectory (absoluteBinnedImageFolder);
                using (var inputStream = absoluteBinnedImagePath.CreateReadStream ())
                using (var sourceBitmap = new Bitmap (inputStream))
                {
                    dzi.GeneratePostImageResizes (sourceBitmap, (level, resizedBitmap) =>
                        {
                            var levelImageName = "{0}.{1}".FormatInvariant (level, extension);
                            var levelImagePath = Path.Combine (absoluteBinnedImageFolder, levelImageName);
                            using (var outputStream = levelImagePath.CreateReadStream ())
                            {
                                resizedBitmap.Save (outputStream, imageFormat);
                            }
                        }
                    );
                }
            }
        }
Example #9
0
 internal void GenerateImageSlices(PostRepository postRepository)
 {
     var dzi = new DeepZoomImage (_settings);
     foreach (var postId in postRepository.RetrievePostIds ())
     {
         dzi.SlicePostImage (postId);
     }
 }