internal void AssembleCollections (TagRepository tagRepository, PostRepository postRepository) { var dzc = new DeepZoomCollection (_settings); var tags = tagRepository.RetrieveTags (); foreach (var tag in tags) { var postIds = new List<int> (postRepository.RetrievePostIds (tag.Id)); dzc.PivotizeTag (tag, postIds); dzc.CreateCollectionManifest (tag, postIds); dzc.CreateCollectionTiles (tag, postIds); } }
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); } } ); } } }
internal void GenerateImageManifests (PostRepository postRepository) { var fileNameIdFormat = _settings.FileNameIdFormat; var imageNode = _settings.GenerateImageManifest (); var sb = new StringBuilder (); using (var writer = XmlWriter.Create (sb, _settings.XmlWriterSettings)) { Debug.Assert (writer != null); imageNode.WriteTo (writer); } var imageManifest = sb.ToString (); foreach (var postId in postRepository.RetrievePostIds ()) { var relativeBinnedImageManifestPath = Post.ComputeBinnedPath (postId, "dzi", fileNameIdFormat); var absoluteBinnedImageManifestPath = Path.Combine (_settings.AbsoluteOutputFolder, relativeBinnedImageManifestPath); Directory.CreateDirectory (Path.GetDirectoryName (absoluteBinnedImageManifestPath)); File.WriteAllText (absoluteBinnedImageManifestPath, imageManifest, Encoding.UTF8); } }
internal void GenerateImageSlices(PostRepository postRepository) { var dzi = new DeepZoomImage (_settings); foreach (var postId in postRepository.RetrievePostIds ()) { dzi.SlicePostImage (postId); } }
internal static void PivotizeTag (PostRepository postRepository, Tag tag, Settings settings) { var workingPath = Path.GetFullPath (WorkingFolderName); var outputPath = Path.GetFullPath (OutputFolderName); var relativeBinnedCxmlPath = tag.ComputeBinnedPath (".cxml"); var absoluteBinnedCxmlPath = Path.Combine (outputPath, relativeBinnedCxmlPath); Directory.CreateDirectory (Path.GetDirectoryName (absoluteBinnedCxmlPath)); using (var outputStream = new FileStream (absoluteBinnedCxmlPath, FileMode.Create, FileAccess.Write, FileShare.Read)) { var postIds = postRepository.RetrievePostIds (tag.Id); var streamReaders = postIds.Map (postId => { var relativeBinnedXmlPath = Post.ComputeBinnedPath (postId, ".xml", settings.FileNameIdFormat); var absoluteBinnedXmlPath = Path.Combine (workingPath, relativeBinnedXmlPath); var sr = new StreamReader (absoluteBinnedXmlPath); return sr; } ); PivotizeTag (tag, streamReaders, outputStream, settings.SiteDomain); } }
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); } } ); } } }
internal static void AssembleCollections (Settings settings, TagRepository tagRepository, PostRepository postRepository) { var outputPath = Path.GetFullPath (OutputFolderName); var imageFormat = settings.PostImageEncoding; var imageFormatName = imageFormat.ToString ().ToLower (); var fileNameIdFormat = settings.FileNameIdFormat; var width = settings.ItemImageSize.Width; var height = settings.ItemImageSize.Height; var tags = tagRepository.RetrieveTags (); foreach (var tag in tags) { // TODO: consider using postIds, currently computed below PivotizeTag (postRepository, tag, settings); var postIds = new List<int> (postRepository.RetrievePostIds (tag.Id)); var relativePathToCollectionManifest = Tag.ComputeBinnedPath (tag.Name, ".dzc"); var absolutePathToCollectionManifest = Path.Combine (outputPath, relativePathToCollectionManifest); var relativePathToRoot = relativePathToCollectionManifest.RelativizePath (); CreateCollectionManifest (postIds, absolutePathToCollectionManifest, imageFormatName, relativePathToRoot, fileNameIdFormat, width, height); CreateCollectionTiles (tag, outputPath, postIds, imageFormat, fileNameIdFormat, outputPath); } }
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); } }
internal static void GenerateImageManifests (Settings settings, PostRepository postRepository) { var outputPath = Path.GetFullPath (OutputFolderName); var fileNameIdFormat = settings.FileNameIdFormat; var imageNode = GenerateImageManifest (settings.TileSize, settings.TileOverlap, settings.PostImageEncoding.ToString ().ToLower (), settings.ItemImageSize.Width, settings.ItemImageSize.Height); var sb = new StringBuilder (); using (var writer = XmlWriter.Create (sb, WriterSettings)) { Debug.Assert (writer != null); imageNode.WriteTo (writer); } var imageManifest = sb.ToString (); foreach (var postId in postRepository.RetrievePostIds ()) { var relativeBinnedImageManifestPath = Post.ComputeBinnedPath (postId, "dzi", fileNameIdFormat); var absoluteBinnedImageManifestPath = Path.Combine (outputPath, relativeBinnedImageManifestPath); Directory.CreateDirectory (Path.GetDirectoryName (absoluteBinnedImageManifestPath)); File.WriteAllText (absoluteBinnedImageManifestPath, imageManifest, Encoding.UTF8); } }