private Response CreateCache() { var cache = new CacheModel(); var imageModel = new ImageModel(); var file = Request.Files.First(); var original = new Bitmap(file.Value); var processed = ImageProcessor.ApplyFilters(original); imageModel.Id = Guid.NewGuid(); imageModel.OriginalImageId = Guid.NewGuid().ToString(); imageModel.OriginalImageThumbnailId = Guid.NewGuid().ToString(); imageModel.ProcessedImageId = Guid.NewGuid().ToString(); imageModel.ProcessedImageThumbnailId = Guid.NewGuid().ToString(); cache.Id = Guid.NewGuid(); cache.Images = new List<Guid>(new []{ imageModel.Id }); cache.CreatorId = Guid.Empty; cache.CreatedDate = DateTime.Now; using (var ms = new MemoryStream(original.ToByteArray())) _documentStore.DatabaseCommands.PutAttachment(imageModel.OriginalImageId, null, ms, new RavenJObject()); using (var ms = new MemoryStream(processed.ToByteArray())) _documentStore.DatabaseCommands.PutAttachment(imageModel.ProcessedImageId, null, ms, new RavenJObject()); using (var ms = new MemoryStream(original.GenerateThumbnail(80, 80).ToByteArray())) _documentStore.DatabaseCommands.PutAttachment(imageModel.OriginalImageThumbnailId, null, ms, new RavenJObject()); using (var ms = new MemoryStream(processed.GenerateThumbnail(80, 80).ToByteArray())) _documentStore.DatabaseCommands.PutAttachment(imageModel.ProcessedImageThumbnailId, null, ms, new RavenJObject()); _images.Create(imageModel); _caches.Create(cache); return Response.AsJson(cache); }
public virtual ActionResult Thumbnail(string galleryName, string path) { var gallery = GetGallery(galleryName); var fullPath = GetAndValidateFullPath(gallery, path); var cachePath = Path.Combine(gallery.ImageDir, THUMBNAIL_DIR, path); // Cache the thumbnail if it doesn't already exist if (!System.IO.File.Exists(cachePath)) { System.IO.Directory.CreateDirectory(Path.GetDirectoryName(cachePath)); using (var sourceImg = new Bitmap(fullPath)) using (var thumb = sourceImg.GenerateThumbnail(MAX_THUMBNAIL_SIZE)) { thumb.Save(cachePath, ImageFormat.Png); } } return File(cachePath, "image/png"); }