internal ImageWithMimeType GenerateThumbnail(FullPath originalImage) { string name = originalImage.File.Name; for (int i = name.Length - 1; i >= 0; i--) { if (name[i] == '_') { name = name.Substring(0, i); break; } } string fullPath = originalImage.File.DirectoryName + "\\" + name + originalImage.File.Extension; if (thumbnailsDirectory != null) { FileInfo thumbPath; if (originalImage.File.FullName.StartsWith(thumbnailsDirectory.FullName)) { thumbPath = originalImage.File; } else { thumbPath = new FileInfo(Path.Combine(thumbnailsDirectory.FullName, originalImage.RelativePath)); } if (!thumbPath.Exists) { if (!thumbPath.Directory.Exists) { System.IO.Directory.CreateDirectory(thumbPath.Directory.FullName); } using (var thumbFile = thumbPath.Create()) using (var original = File.OpenRead(fullPath)) { var thumb = PicturesEditor.GenerateThumbnail(original, thumbnailSize, true); thumb.ImageStream.CopyTo(thumbFile); thumb.ImageStream.Position = 0; return(thumb); } } else { return(new ImageWithMimeType(PicturesEditor.ConvertThumbnailExtension(thumbPath.Extension), thumbPath.OpenRead())); } } else { using (var original = File.OpenRead(fullPath)) { return(PicturesEditor.GenerateThumbnail(original, thumbnailSize, true)); } } }
internal bool CanCreateThumbnail(FileInfo input) { return(ThumbnailsUrl != null && PicturesEditor.CanProcessFile(input.Extension)); }